If X is a nonvariable term in the program text, then it is
executed exactly as if X appeared in the program text instead
of call(X),
e.g.
..., p(a), call( (q(X), r(Y)) ), s(X), ...
is equivalent to
..., p(a), q(X), r(Y), s(X), ...
However, if X is a variable in the program text,
then if at runtime X is instantiated to a term which
would be acceptable as the body of a clause, the goal
call(X) is executed as if that
term appeared textually in place of the call(X),
except that any cut (`!')
occurring in X will remove only those choice points in X.
If X is not instantiated as described above,
an error message is printed and call/1 fails.
Exceptions:
- instantiation_error
- Argument 1 of call/1 is not instantiated.
- type_error
- Argument 1 of call/1 is not a callable term.