(Это НЕ вопрос курсовой работы. Просто мое личное обучение.)
Я пытаюсь выполнить упражнение на Прологе, чтобы удалить элементы из списка . Вот мой код:
deleteall([],X,[]).
deleteall([H|T],X,Result) :-
H==X,
deleteall(T,X,Result).
deleteall([H|T],X,[H|Result]) :- deleteall(T,X,Result).
Когда я его тестирую, я сначала получаю хороший ответ (т.е. со всеми удаленными крестиками). Но затем при поиске с возвратом мне предлагаются все другие варианты списка с некоторыми или ни одним из экземпляров X удален.
Почему это должно быть? Почему случаются случаи, когда H == X попадает в последний пункт?