追加List1中与List2不同的元素prolog中的不同元素

追加List1中与List2不同的元素prolog中的不同元素,prolog,Prolog,我目前正试图找到列表L1和L2中彼此不同的所有元素,并将它们附加到列表L中 到目前为止,我尝试了以下方法: difference(L1, L2, L) :- findall(H, (member(H,L1),\+member(H, L2)), L). |?- difference([1,2,3],[1,2,3,4,5,6], L). |?- difference([1,2,3,4,5,6],[1,2,3], L). 但是,当我查询以下内容时,我只得到一个空列表: diff

我目前正试图找到列表L1和L2中彼此不同的所有元素,并将它们附加到列表L中

到目前为止,我尝试了以下方法:

 difference(L1, L2, L) :-
     findall(H, (member(H,L1),\+member(H, L2)), L).
 |?- difference([1,2,3],[1,2,3,4,5,6], L).
 |?- difference([1,2,3,4,5,6],[1,2,3], L).
但是,当我查询以下内容时,我只得到一个空列表:

 difference(L1, L2, L) :-
     findall(H, (member(H,L1),\+member(H, L2)), L).
 |?- difference([1,2,3],[1,2,3,4,5,6], L).
 |?- difference([1,2,3,4,5,6],[1,2,3], L).
我还尝试查询以下内容:

 difference(L1, L2, L) :-
     findall(H, (member(H,L1),\+member(H, L2)), L).
 |?- difference([1,2,3],[1,2,3,4,5,6], L).
 |?- difference([1,2,3,4,5,6],[1,2,3], L).
有趣的是,对于这个,我得到了L=[4,5,6]。如何将我的事实重写为,使其也能与第一个查询一起工作?

您的定义为“不在L2中的所有L1元素”。
您想要的是“L1L2中不在L1L2中的所有元素”


可能的重复确实是重复,但我很好奇为什么我的解决方案不起作用:)啊,我明白了,这么简单的错误!非常感谢你!