1
我期待下面的代码打印出[9 4],但这不是工作Prolog的运营商定制,以评估
:- op(20,xfx,i).
i(X,Y, Z) :-
Z=[X,Y].
main:-
RESULT is 9 i 4, write(RESULT).
当我收到错了吗?
我期待下面的代码打印出[9 4],但这不是工作Prolog的运营商定制,以评估
:- op(20,xfx,i).
i(X,Y, Z) :-
Z=[X,Y].
main:-
RESULT is 9 i 4, write(RESULT).
当我收到错了吗?
操作符基本上是语法糖;我们只是写1+2
而不写+(1,2)
。
因此,9 i 4
相当于i(9,4)
现在,+/2不仅是运营商,但也是一个arithmetic function
注意,结果应该是一个数,所以你不能用它返回一个列表(而不能使用是/ 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).