Ihm*_*ahr 4 declarative prolog
我有这个任意函数,我需要用不同的变量多次调用.顺便说一句,这是SWI-Prolog
perform(V1,V2,V3,Function,Result):-
%
% do little stuf.
%
Function(Arg1,Arg2,Result).
Run Code Online (Sandbox Code Playgroud)
这给出了语法错误.
但是将函数作为变量传递而不添加参数可以正常工作,如下面的代码所示:
perform(Function):-
Function.
sayHello:-
write('hello').
:-perform(sayHello).
Run Code Online (Sandbox Code Playgroud)
那么如何为变量函数添加参数呢?
特别是在SWI-Prolog中你可以使用call.引用手册:
呼叫(:目标,+ ExtraArg1,......)
将ExtraArg1,ExtraArg2,...附加到Goal的参数列表中并调用结果.例如,call(plus(1),2,X)将调用plus(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(这也暗示"+").