[ Obsolete | Reference Manual | Alphabetic Index ]
call_explicit(+Goal, +Module)
Succeeds if Goal which is defined in module Module succeeds.
- Goal
- Atom or compound term.
- Module
- Atom.
This built-in predicate is obsolete!
Description
   This predicate provides a means to override the module system's
   visibility rules.  While the builtins call/1 and call/2 call the
   predicate that is visible from a certain module, call_explicit/2 allows
   to call a predicate which is defined in a certain module.  This allows
   calling a predicate that is otherwise not visible in the caller module.
   The most plausible use of this feature is to allow local redefinition of
   a predicate using the existing definition in the implementation.
   Note that call_explicit can only call exported or global predicates in
   order to preserve module privacy.
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.
- (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]: cd(~).
     system interface error:
                      No such file or directory in cd(~)
     [eclipse]: [user].         % redefine cd/1, using its
                              % original definition
      cd(~) :- !,
               getenv('HOME', Home),
               call_explicit(cd(Home), sepia_kernel).
      cd(Dir) :-
               call_explicit(cd(Dir), sepia_kernel).
      [eclipse]: cd(~).
      yes.
Fail:
      call_explicit(fail, sepia_kernel).
Error:
      call_explicit(Var,eclipse).                (Error 4).
      call_explicit(ls,Var).                     (Error 4).
      call_explicit("write(a)",eclipse).         (Error 5).
      call_explicit(foo(a),eclipse).             (Error 68).
See Also
: / 2, call / 1, @ / 2