【发布时间】:2019-01-09 16:00:36
【问题描述】:
这里有两个谓词 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(1, X),而您的len/2仅与[]和[_|_]统一,而不是数字)。
标签: prolog