Довольно новая для Пролога. Я пытаюсь дать два списка, и разница между ними вернулась. Второй список может иметь связанные переменные и несвязанные переменные в нем. Я пробовал отслеживать это, и он повторяется полностью и дает мне правильный список в NewL, но затем на обратном пути он отменяет все удаленные действия, которые я сделал. Что происходит не так? Спасибо за помощь!Пролог: Разница в двух списках
% Find difference between two lists, return result in Difference
difference(List,[H|T],Difference) :- % When H is unbound var, use Tail
var(H),!,difference(List,T,Difference),!.
difference(List,[H|T],Difference) :- % When H is bound var, remove from List.
subtract(List,[H],NewL),
difference(NewL,T,Difference),!.
вставки случайных порезов в предикате, как правило, плохой способ идти о решении ошибок:] – m09