[ Predicate Database and Compiler | Reference Manual | Alphabetic Index ]
current_module_predicate(+Property, ?PredSpec)
Used to enumerate all predicates with given property in the caller 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 caller
    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