我想删除列表中元素的所有出现,类似于this,但在我的情况下,列表可能有未实例化的变量。例如:
delMember(z, [A,B,A,z], L).
L = [A, B, A];
false.
和
delMember(A, [A, B, A, z], L).
L = [B,z];
false.
我尝试将 delMember 定义如下:
delMember(_, [], []).
delMember(X, [X|Xs], Y) :- delMember(X, Xs, Y).
delMember(X, [T|Xs], [T|Y]) :- X \== T, delMember(X, Xs, Y).
有了这个定义,我得到的最后一个结果是正确的,但它仍在尝试在此之前实例化变量。
?- delMember(A, [A,B,A,z], R).
A = B, B = z,
R = [] ;
A = B,
R = [z] ;
A = z,
R = [B] ;
R = [B, z] ;
有任何想法吗???