Prolog 为什么没有';不统一?序言
这里我们有两个谓词 len->返回列表的长度。 processRel->调用lenProlog 为什么没有';不统一?序言,prolog,Prolog,这里我们有两个谓词 len->返回列表的长度。 processRel->调用len len([],0). len([_|T], R):- len(T,X), R is X+1. processRel([H|Q],X):- len(H,X). 为什么它不统一? 它返回以下内容: ?-processRel([1,2,3,4],X) 错 而不是(我的期望): X=4 谓词“len”起作用,我已经测试过了,但我不明白为什么如果将该谓词放在另一个谓词中
len([],0).
len([_|T], R):-
len(T,X),
R is X+1.
processRel([H|Q],X):-
len(H,X).
为什么它不统一?
它返回以下内容:
?-processRel([1,2,3,4],X)
错
而不是(我的期望):
X=4
谓词“len”起作用,我已经测试过了,但我不明白为什么如果将该谓词放在另一个谓词中,它会这样工作。谢谢大家! 你应该来
processRel(L,X):-
len(L,X).
现在是
processRel([H|Q],X):-
len(H,X).
插入[1,2,3,4]
意味着我们得到
processRel([1,2,3,4],X):-
len(1,X).
因此它统一为len(1,X)。它没有被定义,因为1不是一个列表。它确实与头统一,但是你调用
len(1,X)
,而你的len/2
只与[]
和[\u124;]
统一,而不是与数字统一。谢谢!!你解决了我的问题!另一个问题,为什么我要写这个:minL(L):-len(L,X),X