下面的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中没有定义。那么我该怎么做呢???请重新阅读上面的错误消息:您清楚地看到,在您的程序中,您没有使用e> 评估,而不是评估。。。
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.