+1 за рекламу

не вопрос курсовой работы. Просто мое личное обучение.)

Я пытаюсь выполнить упражнение в Прологе, чтобы удалить элементы из списка. Вот мой код:

deleteall([],X,[]).
deleteall([H|T],X,Result) :- 
    H==X,
    deleteall(T,X,Result).
deleteall([H|T],X,[H|Result]) :- deleteall(T,X,Result).

Когда я проверяю его, я сначала получаю хороший ответ (т. Е. Со всеми удаленными X). Но затем при возврате мне предлагаются все другие варианты списка с некоторыми или ни с одним удаленным экземпляром X.

Почему это должно быть? Почему случаи, когда H == X когда-либо проваливаются до последнего предложения?

Ответы на вопрос(2)

Ваш ответ на вопрос