current_atom1-Atom
Successively unifies Atom with all atoms known to the system.
Note that current_atom1 always succeeds if Atom is instantiated to
an atom.
current_functor2?Name, ?Arity
Successively unifies Name with the name and Arity with the
arity of functors known to the system.
current_flag1-FlagKey
Successively unifies FlagKey with all keys used for flags (see
flag3).
current_key1-Key
Successively unifies Key with all keys used for records (see
recorda3, etc.).
current_predicate2?Name, ?Head
Successively unifies Name with the name of predicates currently
defined and Head with the most general term built from Name
and the arity of the predicate. This predicate succeeds for all
predicates defined in the specified module, imported to it, or in one of
the modules from which the predicate will be imported if it is called.
predicate_property2?Head, ?Property
Succeeds if Head refers to a predicate that has property
Property. Can be used to test whether a predicate has a certain
property, obtain all properties known for Head, find all
predicates having property or even obtaining all information
available about the current program. Property is one of:
- interpreted
Is true if the predicate is defined in Prolog. We return true on this
because, although the code is actually compiled, it is completely
transparent, just like interpreted code.
built_in
Is true if the predicate is locked as a built-in predicate. This
implies it cannot be redefined in its definition module and it can
normally not be seen in the tracer.
foreign
Is true if the predicate is defined in the C language.
dynamic
Is true if the predicate is declared dynamic using the dynamic1
declaration.
multifile
Is true if the predicate is declared multifile using the multifile1
declaration.
undefined
Is true if a procedure definition block for the predicate exists,
but there are no clauses in it and it is not declared dynamic. This is
true if the predicate occurs in the body of a loaded predicate, an
attempt to call it has been made via one of the meta-call predicates or
the predicate had a definition in the past. See the library package
check for example usage.
transparent
Is true if the predicate is declared transparent using the
module_transparent1 declaration.
exported
Is true if the predicate is in the public list of the context module.
imported_fromModule
Is true if the predicate is imported into the context module from
module Module.
indexedHead
Predicate is indexed (see index1) according to Head. Head
is a term whose name and arity are identical to the predicate. The
arguments are unified with `1' for indexed arguments, `0' otherwise.
fileFileName
Unify FileName with the name of the sourcefile in which the
predicate is defined. See also source_file2.
line_countLineNumber
Unify LineNumber with the line number of the first clause of the
predicate. Fails if the predicate is not associated with a file. See
also source_file2.
number_of_clausesClauseCount
Unify ClauseCount to the number of clauses associated with the
predicate. Fails for foreign predicates.
dwim_predicate2+Term, -Dwim
`Do What I Mean' (`dwim') support predicate. Term is a term,
which name and arity are used as a predicate specification. Dwim
is instantiated with the most general term built from Name and the
arity of a defined predicate that matches the predicate specified by
Term in the `Do What I Mean' sense. See dwim_match2 for `Do
What I Mean' string matching. Internal system predicates are
not generated, unless style_check(+dollar) is active. Backtracking
provides all alternative matches.
clause2?Head, ?Body
Succeeds when Head can be unified with a clause head and Body with the corresponding clause body. Gives alternative clauses on
backtracking. For facts Body is unified with the atom true.
Normally clause2 is used to find clause definitions for a predicate, but it
can also be used to find clause heads for some body template.
clause3?Head, ?Body, ?Reference
Equivalent to clause2, but unifies Reference with a unique reference to
the clause (see also assert2, erase1). If Reference is instantiated
to a reference the clause's head and body will be unified with
Head and Body.
nth_clause3?Pred, ?Index, ?Reference
Provides access to the clauses of a predicate using their index number.
Counting starts at 1. If Reference is specified it unifies Pred
with the most general term with the same name/arity as the predicate and
Index with the index-number of the clause. Otherwise the name and
arity of Pred are used to determine the predicate. If Index
is provided Reference will be unified with the clause reference.
If Index is unbound, backtracking will yield both the indices and
the references of all clauses of the predicate. The following example
finds the 2nd clause of member2:
clause_property2+ClauseRef, -Property
Queries properties of a clause. ClauseRef is a reference to a
clause as produced by clause3, nth_clause3 or prolog_frame_attribute3.
Property is one of the following:
- fileFileName
Unify FileName with the name of the sourcefile in which the
clause is defined. Fails if the clause is not associated to a file.
line_countLineNumber
Unify LineNumber with the line number of the clause. Fails if
the clause is not associated to a file.
fact
True if the clause has no body.
erased
True if the clause has been erased, but not yet reclaimed because
it is referenced.