2011-10-01 54 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.