下面的prolog程序有什么问题
我制作了以下程序,即:下面的prolog程序有什么问题,prolog,Prolog,我制作了以下程序,即: eval([],_,_). eval([(U, V)| Tail], X, Y):- Y + evaluate([Tail], X, Y), Y is U * (X ** V). 它返回false,我不知道为什么。我怎样才能修好它 所以这个eval([(4,3),4,X)应该返回256。 和eval([(4,3)、(1,0)],4,X)。应返回257 现在我得到了这个错误“ 错误:未定义的过程:(+)/2 错误:在: 错误:[9]_5562+eval([…],
eval([],_,_).
eval([(U, V)| Tail], X, Y):-
Y + evaluate([Tail], X, Y), Y is U * (X ** V).
它返回false,我不知道为什么。我怎样才能修好它
所以这个eval([(4,3),4,X)
应该返回256
。
和eval([(4,3)、(1,0)],4,X)。
应返回257
现在我得到了这个错误“
错误:未定义的过程:(+)/2
错误:在:
错误:[9]_5562+eval([…],4,_5572)
错误:[8]eval([(4,3),…],4,_5606)位于c:/users/parya lotfi/desktop/exe2.pl:2
错误:[7]
I并不总是返回false
!比如eval([],1,0)
成功!你需要给出一个具体的例子,你希望它是真的。什么是Y+evaluate([Tail],X,Y)
应该做什么?在Prolog中,谓词成功、失败或不终止。它们不返回函数之类的值。这就是为什么会出现这种错误。+
在Prolog中没有定义。那么我该怎么做呢???请重新阅读上面的错误消息:您清楚地看到,在您的程序中,您没有使用ERROR: Undefined procedure: (+)/2
ERROR: In:
ERROR: [9] _5562+eval([...],4,_5572)
ERROR: [8] eval([(4,3),...],4,_5606) at c:/users/parya lotfi/desktop/exe2.pl:2
ERROR: [7] <user>
eval([], _,0).
eval([(U,V)|UVs], X, Y0) :-
eval(UVs, X, Y1),
Y0 is Y1 + U*X^V.
?- eval([(4,3),(1,0)], 4, X).
X = 257.