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?

questionAnswers(2)

yourAnswerToTheQuestion