Prolog定制运营商进行评估

时间:2011-12-16 16:04:16

标签: prolog logic

我希望以下代码打印出来[9 4],但这不起作用

:- op(20,xfx,i).

i(X,Y, Z) :-
         Z=[X,Y].

main:-
       RESULT is 9 i 4, write(RESULT).  

我哪里出错了?

2 个答案:

答案 0 :(得分:3)

操作员基本上是语法糖;我们只是写+(1,2)而不是写1+2 因此,9 i 4相当于i(9,4)

现在,+ / 2不仅是运营商,还是arithmetic function 请注意,结果应该是一个数字,所以你不能用它来返回一个列表(也不能使用是/ 2)

答案 1 :(得分:2)

这适用于

:- op(800,xfx,i).

R is A i B :-
    i(A, B, R).

i(X,Y, Z) :-
    Z=[X,Y].

main:-
   RESULT is 9 i 4, write(RESULT).