2011-10-01 41 views
4

我有一个运算符存储在一个变量Op和两个整数存储在X和Y.现在,我想要做一些像(Z是X操作Y),但这种语法似乎不是正确。序言 - 变量作为运算符

有没有人知道在Prolog中是否有办法做到这一点?

谢谢您的回答

回答

8

you ca n通过使用= ..运算符构建谓词。

尝试这样的:

compute(X,Y,Op,Z) :- 
    Eq=..[Op, X, Y], 
    Z is Eq. 

运算符是真的,就像任何其他仿函数。

+0

http://www.swi-prolog.org/pldoc/doc_for?object=%28%3D..%29/2 – DaveEdelstein

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, 
Z = 24.