[ Control | Reference Manual | Alphabetic Index ]
call(+Goal)
Succeeds if Goal succeeds.
- Goal
- Atom or compound term.
Description
Calls the goal Goal. This predicate is used to call goals whose
functors are known only at the time they are called.
Note that:
call(Goal) is logically the same as Goal and !/0 does not cut through
call/1.
Modules
This predicate is sensitive to its module context (tool predicate, see @/2).
Fail Conditions
Fails if Goal fails
Resatisfiable
Resatisfiable if Goal is resatisfiable
Exceptions
- (4) instantiation fault
- Goal is not instantiated.
- (5) type error
- Goal is not an atom or a compound term.
Examples
Success:
[eclipse]: [user].
or(A -> B, C) :- call(A), !, call(B).
or(_ -> _, C) :- call(C).
user compiled 412 bytes in 0.02 seconds
[eclipse]: or(write(a)->fail, write(k)).
a
no.
[eclipse]: or(fail->write(here),true).
yes.
Fail:
[eclipse]: call(fail),write(here).
no.
Error:
call(G). (Error 4).
call("write(a)"). (Error 5).
See Also
subcall / 2, @ / 2, : / 2, call / (2 .. 255)