call(Goal) call(Closure, Arg1, ...) call(Object::Closure, Arg1, ...) call(::Closure, Arg1, ...)
Calls a goal, which might be constructed by appending additional arguments to a closure. The upper limit for N
depends on the upper limit for the arity of a compound term of the back-end Prolog compiler. This built-in meta-predicate is declared as a private method and thus cannot be used as a message to an object. When using a back-end Prolog compiler supporting a module system, calls in the format call(Module:Closure, Arg1, ...)
may also be used.
Note that ::Closure
closures are only supported for local meta-calls. Passing this kind of closure as an argument of a meta-predicate called using message sending is not supported and always fails as the value of self is lost in the round-trip to the object defining the meta-predicate. The workaround is to simply call the self(Self)
built-in method and use the returned value with a Self::Closure
closure instead.
call(+callable) call(+callable, ?term) call(+callable, ?term, ?term) ...
instantiation_error
type_error(callable, Goal)
instantiation_error
type_error(callable, Closure)
call(Closure, Arg1, Arg2, ...)
call(::Closure, Arg1, Arg2, ...)
call(Object::Closure, Arg1, Arg2, ...)