我有一个存储在变量Op中的运算符,并且在X和Y中存储了两个整数。现在,我想做类似的事情(Z是X Op Y),但这种语法似乎不正确。
有人知道在Prolog中是否有办法做到这一点?
感谢您的回答
答案 0 :(得分:9)
你可以通过使用= ..运算符构建谓词来实现。
尝试如下:
compute(X,Y,Op,Z) :-
Eq=..[Op, X, Y],
Z is Eq.
操作员就像任何其他算子一样。
答案 1 :(得分:0)
您可以模仿效果:
operator(Z,X,plus,Y):-Z is X + Y.
operator(Z,X,times,Y):-Z is X * Y.
我在ideone.com上试用了SWI-Prolog:
OP=times, operator(Z,3,OP,8).
我得到了:
OP = times,
Z = 24.