要与单个元素列表统一,请执行[_]
。如何统一具有多个元素的列表?由于[_|_]
仍将与[1]
统一。
例如,我想知道是否可以与[1,2]
统一,但不能与[1]
统一。
我需要这个,因为我想使用delete(Lst1,[_|_] (if this worked), Lst2)
来删除Lst1中的所有多元素列表。
现在要完成此操作,我必须首先从Lst1中删除所有单元素列表以获取包含所有多元素列表的列表,然后从Lst1中删除该列表以获取包含所有单元素列表的列表。
答案 0 :(得分:4)
术语[_,_|_]
与具有至少2个元素的列表统一起来:
?- [1]=[_,_|_].
no
?- [1,2]=[_,_|_].
yes
?- [1,2,3]=[_,_|_].
yes
关于您使用减法/ 3的计划,请考虑以下查询:
?- subtract([[1],[2,3],[4],[2,3]],[[_,_|_]], Lst2).
Lst2 = [[1], [4]].
这似乎是您想要做的,但如果[_,_|_]
与[2,3]
统一:
?- subtract([[1],[2,3],[4],[5,6]],[[_,_|_]], Lst2).
Lst2 = [[1], [4], [5, 6]].
你是否有机会尝试做this之类的事情?