[ Predicate Database and Compiler | Reference Manual | Alphabetic Index ]
current_module_predicate(+Property, ?PredSpec)
Used to enumerate all predicates with given property in the context module
- Property
- An atom.
- PredSpec
- A variable or an expression of the form Atom/Integer.
Description
This predicate is mainly used to enumerate all predicates in the context
module with one of the following properties (for testing, use get_flag/3):
- undeclared
-
predicates that have been referenced but are neither
declared nor defined in this module.
- no_module
-
predicates whose module of origin is known (through import or qualified
reference), but that module does not exist.
- no_export
-
predicates whose module of origin exists, but the predicate is not
exported from there.
- local
-
defined predicates that are local
- exported
-
defined predicates that are exported
- reexported
-
defined predicates that are reexported
- exported_reexported
-
defined predicates that are exported or reexported
- defined
-
predicates defined in this module (local or exported)
- undefined
-
local or exported predicates that have not been defined (no clauses)
- deprecated
-
predicates that are imported or referenced via qualification, but have
their deprecated-flag set.
This predicate is more efficient than current_predicate/1 and
current_built_in/1 when one is not interested in imported predicates.
In particular, it does not complain about ambiguous imports.
Modes and Determinism
- current_module_predicate(+, -) is nondet
- current_module_predicate(+, ++) is semidet
Modules
This predicate is sensitive to its module context (tool predicate, see @/2).
Fail Conditions
Fails if there is no predicate with the given property
Exceptions
- (4) instantiation fault
- Property is not instantiated
- (5) type error
- Property is not an atom
- (5) type error
- PredSpec is instantiated, but not to the form Atom/Integer.
Examples
[eclipse 1]: [user].
:- local r/0.
p :- q, r.
yes.
[eclipse 2]: current_module_predicate(defined,P).
P = p / 0
yes.
[eclipse 3]: current_module_predicate(undefined,P).
P = r / 0
yes.
[eclipse 4]: current_module_predicate(undeclared,P).
P = q / 0
yes.
See Also
current_built_in / 1, current_predicate / 1, get_flag / 3