Call the goal formed by appending the additional argument Arg (and any further arguments given) to GoalPrefix. For example, the following calls are all equivalent and invoke p/2:
call(p, 1, 2) call(p(1), 2) call(p(1,2) )The maximum arity for call/N is the one indicated by get_flag(max_predicate_arity,N), and is at least 255.
These predicates are sensitive to their calling context module in the same way as call/1.
Implementation note: These predicates are materialised lazily the first time they are being invoked. They may therefore not show up with current_built_in/1, get_flag/3 or other similar access methods.
    ?- call(p, 1, 2, 3).
    calling an undefined procedure p(1, 2, 3) in module eclipse
    Abort
    ?- call(append(L, R), [1]).
    L = []
    R = [1]
    Yes (0.00s cpu, solution 1, maybe more)
    L = [1]
    R = []
    Yes (0.00s cpu, solution 2)
    ?- call(+(3), 4, X).
    X = 7
    Yes (0.00s cpu)
    % A typical use case
    filter(_, [], []).
    filter(Pred, [X|Xs], Ys) :-
        ( call(Pred, X) ->
            Ys = [X|Ys1],
            filter(Pred, Xs, Ys1)
        ;
            filter(Pred, Xs, Ys)
        ).
    ?- filter(atom, [1, a, 2, b, c], As).
    As = [a, b, c]
    Yes (0.03s cpu)
    ?- filter(integer, [1, a, 2, b, c], As).
    As = [1, 2]
    Yes (0.06s cpu)
    ?- filter(<(2), [5, 1, 4, 2, 3], Is).
    Is = [5, 4, 3]
    Yes (0.00s cpu)