Simple Prolog excluir da lista
(Esta NÃO é uma pergunta do curso. Apenas meu aprendizado pessoal.)
Estou tentando fazer um exercício no Prolog para excluir elementos de uma lista. Aqui está o meu código:
deleteall([],X,[]).
deleteall([H|T],X,Result) :-
H==X,
deleteall(T,X,Result).
deleteall([H|T],X,[H|Result]) :- deleteall(T,X,Result).
Quando testo, recebo uma boa resposta (com todos os Xs removidos.) Mas, em seguida, o retorno oferece todas as outras variantes da lista, com algumas ou nenhuma das instâncias do X removida
Por que deveria ser isso? Por que casos em que H == X caem até a última cláusula?