我试图完成以下任务,如果我有两个列表,L1 和 L2,我希望结果 (R) 是 L1 中 L2 的“减法”。
Example:
L1 = [1,2,3]
L2 = [2,3,4,5]
R = [1]
我能够做到这一点,但我不知道两者之间有什么区别_
and [_]
.
如果我这样做:
diferencia([],_,[]).
diferencia([X|Tail],L2,R):-
member(X,L2),
diferencia(Tail,L2,R).
diferencia([X|Tail],L2,[X|R]):-
not(member(X,L2)),
diferencia(Tail,L2,R).
它有效,如果我这样做,它会给我错误:
diferencia([],[_],[]).
diferencia([X|Tail],L2,R):-
member(X,L2),
diferencia(Tail,L2,R).
diferencia([X|Tail],L2,[X|R]):-
not(member(X,L2)),
diferencia(Tail,L2,R).
我会假设一个包含任何内容的列表[_]
应该可以工作,因为 L2 始终是一个列表。