我想要统计列表中某个元素出现的次数,目前我已经想到了以下方法:
rate(X,[H|T],N):-
X == H,
N is N+1,
rate(X,T,N).
rate(X,[_|T],N) :-
rate(X,T,N).
rate(_,[],N) :-
N is 0.
我已经介绍了当找到匹配项、未找到匹配项和到达列表末尾时的情况。但是在测试时,我遇到了
43 ?- rate(4,[4,2,3,4,4,2],X).
ERROR: is/2: Arguments are not sufficiently instantiated
Exception: (6) frequency(4, [4, 2, 3, 4, 4, 2], _G393) ?
我需要了解您错过了哪些论点?
X \= Y
。只需在前一个谓词中加入一个割断,即当它们相等时。 - Ash