Этот код дает мне количество нулей в списке. Но если мой список [0,_,0,0,_], код говорит, что есть 5 нулей ..
[0,_,0,0,_]
Я написал что-то вроде:
count([], 0). count([H|T], N) :- count(T, X), ( H = 0 -> N is X+1 ; N is X ).
Как я могу исправить мою проблему?
Если вы пишете H = 0, H объединяется с 0, это будет успешным, если H равно 0 или H не объединен ни с чем. Так что вам просто нужно проверить, является ли H эквивалентным 0, используйте == вместо = .