[ Obsolete | Reference Manual | Alphabetic Index ]

call(+Goal, +Module)

Succeeds if Goal (which is visible in module Module) succeeds.
Goal
Atom or compound term.
Module
Atom.

This built-in predicate is obsolete!

Description

Calls a goal Goal from the module Module. This predicate is used to call goals whose functors and visibility are known only at the time they are called. It may be used to implement tool bodies.

Note that !/0 does not cut through call/2.

Fail Conditions

Fails if Goal fails

Resatisfiable

Resatisfiable if Goal is resatisfiable

Exceptions

(4) instantiation fault
Goal is not instantiated.
(4) instantiation fault
Module is not instantiated.
(5) type error
Goal is neither an atom nor a compound term.
(5) type error
Module is not an atom.
(68) calling an undefined procedure
Goal is an undefined procedure in Module.

Examples

Success:
      [eclipse]: [user].
       :-module(m).
       p.
       user        compiled 28 bytes in 0.00 seconds
      yes.
      [eclipse]: p.
      calling an undefined procedure p in module eclipse
      [eclipse]: call(p, m).
      yes.

Fail: call(fail, any).

Error:
      call(Var,eclipse).                (Error 4).
      call(ls,Var).                     (Error 4).
      call("write(a)",eclipse).         (Error 5).
      call(foo(a),eclipse).             (Error 68).



See Also

call / 1, @ / 2, : / 2