I am trying to implement a list difference routine in prolog. For some reason the following fails:
difference(Xs,Ys,D) :- difference(Xs,Ys,[],D).
difference(
always (subtructLists(List, [Head|Rest], Result): -
(
delete_element(Head, List, Subtructed)
, !
, subtructLists(Subtructed, Rest, Result)
) ; (
subtructLists(List, Rest, Result)
)
).
always (subtructLists(List, [], List)).
always( delete_element(X, [X|Tail], Tail)).
always( delete_element(X, [Y|Tail1], [Y|Tail2]): -
delete_element(X, Tail1, Tail2)
).