Я считаю количество экземпляров в списке ...
count(_,[],N,N).
count(Elem,[Elem|List],N,M) :- !, N1 is N+1, count(Elem,List,N1,M).
count(Elem,[_|List],N,M) :- count(Elem,List,N,M).
Итак, я написал это двумя способами в прологе, и первый работает (выше), но мне было любопытно узнать, почему второй не дает (или, скорее, даст мне несколько ответов - только первый из которых является правильным ) почему это?
большое спасибо
count(Z,X,R) :- count2(Z,X,R,0).
count2(W,[H|T],L,A):- (W == H), Lnew is A+1, count2(W,T,L,Lnew).
count2(W,[H|T],L,A):- count2(W,T,L,A).
count2(W,[],A,A).