所以我有两个列表:
[location(A),package(B)]
和
[location(C),package(B),truck(D)]
我想将它们加在一起而不添加相同的术语。也就是说,结果应该是
[location(A),package(B),location(C),truck(D)] %Package B doesn't get repeated
我可以编写自己的remove_duplicates
,但是它将location(A)
标识为匹配的location(C)
,并且我俩都需要。
目的是要制定一条规则,稍后再声明,在该规则中我可能引用了多个位置,包裹和卡车。该规则包含变量,因此它可以将不同的状态/情况与指定的位置,包裹和卡车进行匹配。我的学习算法在搜索正确的前提条件集时为其添加了前提条件。
如果这需要使用基本术语来完成,我想我会遇到一个问题,那就是它以后必须是变量。
答案 0 :(得分:3)
假设顺序不重要,则简单的解决方案是使用事实上的标准append/3
谓词和标准sort/2
谓词。例如:
| ?- append([location(A),package(B)], [location(C),package(B),truck(D)], List), sort(List, Sorted).
List = [location(A),package(B),location(C),package(B),truck(D)]
Sorted = [location(A),location(C),package(B),truck(D)]