
call(+Goal)

   Succeeds if Goal succeeds.



Arguments
   Goal                Atom or compound term.

Type
   Control

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 --- Goal is not instantiated.
     5 --- 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)
