Prolog 很新。我正在尝试提供两个列表并将两者的差异返回给我。第二个列表中可以包含绑定变量和未绑定变量。我已经尝试过跟踪它,它一直递归并在 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),!.