我有这个任意函数,我需要用不同的变量多次调用。 顺便说一句,这是SWI-Prolog
perform(V1,V2,V3,Function,Result):-
%
% do little stuf.
%
Function(Arg1,Arg2,Result).
这会产生语法错误。
但是在不添加参数的情况下将函数作为变量传递可以正常工作,如下面的代码所示:
perform(Function):-
Function.
sayHello:-
write('hello').
:-perform(sayHello).
那么如何向变量函数添加参数?
答案 0 :(得分:8)
特别是在SWI-Prolog中,您可以使用call
。引用手册:
致电(:目标,+ ExtraArg1,......)
将ExtraArg1,ExtraArg2,...添加到 目标的参数列表并调用结果。例如,打电话(加(1), 2,X)将调用加(1,2,X),将X绑定为3.调用/ [2 ..] 构造由编译器处理。谓词调用/ [2-8]是 定义为真实(元)谓词并可用于检查 通过current_predicate / 1,predicate_property / 2等等。更高 arities由编译器和运行时系统处理,但是 谓词无法检查。
其中加号表示argument must be fully instantiated to a term that satisfies the required argument type
,而冒号表示agument is a meta-argument
(这也表示“+”)。