我是Prolog的新手,它创造功能的方式让我有点歪曲。
在Python中,我会做
def get_result(func, inpt):
return func(inpt)
现在我正在尝试在Prolog中做同样的事情。我从教程中发现,在Prolog中,在编写函数时,通常将返回值作为最后一个参数。然后,您可以通过function(..., X)
获取函数的结果,然后它将吐出X = ...
作为您的答案。
所以,我试着这样做:
get_result(Action, State, Result) :- Action(State, Result).
但是Prolog给了我错误Syntax error: operator_expected
。
如何编写一个函数,让我在Prolog中将第一个参数的结果应用于第二个参数?
答案 0 :(得分:1)
只需致电: 例如:
double(X,Y) :-
Y is 2 * X.
get_result(Action, State, Result) :- call(Action, State, Result).
结果:
?- get_result(double, 3, R).
R = 6.