 0
 0 
Confused by
"The argument is a term that is used to reference a predicate with N more arguments than the given argument term. For example: call(0) or maplist(1, +)."
?
You are not alone. Read this:
| Did you know ... | Search Documentation: | 
|  | Predicate meta_predicate/1 | 
:^//+-*?call(0) 
or maplist(1, +).:consult(:).^^-annotated 
goal of
setof/3, bagof/3, aggregate/3 
and aggregate/4. 
It is processed similar to‘0’, but leaving the ^//-?*+*?
Each argument that is module-sensitive (i.e., marked 0..9, :^:/2
:- meta_predicate
        meta(0, +).
meta(Module:Term, _Arg) :-
        format('Module=~w, Term = ~q~n', [Module, Term]).
?- meta(test, x). Module=user, Term = test ?- meta(m1:test, x). Module=m1, Term = test ?- m2:meta(test, x). Module=m2, Term = test ?- m1:meta(m2:test, x). Module=m2, Term = test ?- meta(m1:m2:test, x). Module=m2, Term = test ?- meta(m1:42:test, x). Module=42, Term = test
The meta_predicate/1 declaration is the portable mechanism for defining meta-predicates and replaces the old SWI-Prolog specific mechanism provided by the deprecated predicates module_transparent/1, context_module/1 and strip_module/3. See also section 6.16.
 0
 0 
Confused by
"The argument is a term that is used to reference a predicate with N more arguments than the given argument term. For example: call(0) or maplist(1, +)."
?
You are not alone. Read this: