以下代码无效
:- arithmetic_function(i/2).
i(X,Y,Z) :-
Z is X+Y.
calcola :-
write('Give me an expression'),nl,
read(ESP),
Z is ESP,nl,nl,
write(Z).
但以下是
:- arithmetic_function(i/2).
i(X,Y,Z) :-
Z is X+Y.
calcola :-
write('Give me an expression'),nl,
Z is 4 i 2,nl,nl,
write(Z).
为什么?好像“阅读”功能无法正常工作
答案 0 :(得分:3)
来自SWI-Prolog邮件列表([SWIPL] Ann:SWI-Prolog 5。11。23,3月23日):
MODIFIED:已删除用户定义的算术函数 内核。有一个新的库(算术)模仿 旧的行为部分。值得注意的是:
答案 1 :(得分:1)
作为领导者,当我使用is/2
进行测试时,它会失败但是当我使用arithmetic_expression_value/2
时它会成功:
:- arithmetic_function(i/2).
:- op(20, xfx, i).
i(X, Y, Z) :-
Z is X + Y.
calcola :-
writeln('Give me an expression'),
read(ESP),
arithmetic_expression_value(ESP, Z), nl,
write(Z).
对于@gusbro,它开箱即用。我在这里使用windows swi-pl作为记录!
其他人可能有关于它为什么失败的线索!