如何创建一个函数,返回将函数应用于Prolog中的值的结果?

时间:2018-03-27 02:05:25

标签: prolog

我是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中将第一个参数的结果应用于第二个参数?

1 个答案:

答案 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.