# call/1-N

## Description

    call(Goal)
    call(Closure, Arg1, ...)

Calls a goal 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 backend Prolog compiler. This built-in meta-predicate is declared as a private method and thus cannot be used as a message to an object. The `Closure` argument can also be a lambda expression or a Logtalk control construct. When using a backend Prolog compiler supporting a module system, calls in the format `call(Module:Closure, Arg1, ...)` may also be used.

This meta-predicate is opaque to cuts in its arguments.

## Modes and number of proofs

    call(+callable) - zero_or_more
    call(+callable, ?term) - zero_or_more
    call(+callable, ?term, ?term) - zero_or_more
    ...

## Errors

`Goal` is a variable:
`instantiation_error`
`Goal` is neither a variable nor a callable term:
`type_error(callable, Goal)`
`Closure` is a variable:
`instantiation_error`
`Closure` is neither a variable nor a callable term:
`type_error(callable, Closure)`

## Examples

Call a goal, constructed by appending additional arguments to a closure, in the context of the object or category containing the call:
`call(Closure, Arg1, Arg2, ...)`
To send a goal, constructed by appending additional arguments to a closure, as a message to self:
`call(::Closure, Arg1, Arg2, ...)`
To send a goal, constructed by appending additional arguments to a closure, as a message to an explicit object:
`call(Object::Closure, Arg1, Arg2, ...)`

See also

ignore/1, once/1, \+/1