我想使用谓词来查找满足包含至少一个原子(非变量)的需求的子列表。
contain_atomic([[a,c,e],[a,e,D],[D,A,E]],X).
X = [[a,c,e],[a,e,D]].
到目前为止,我只能将那些元素都是变量的子列表变为空。
all_variable([],[]).
all_variable([A|B],[]):-
\+atomic(A),
all_variable(B,[]).
下一步是什么?我接近成功吗?
答案 0 :(得分:1)
我建议您编写一个谓词,说明单个子列表必须包含在结果中的内容(我将此任务作为您具体案例的简单练习):
your_property(Sublist) :-
...
然后,使用include/3
过滤所有满足此属性的子列表:
include(your_property, Lists0, Lists)
在过滤列表时,始终(至少)考虑使用include/3
和exclude/3
,因为它们只需要对单个元素的属性进行描述即可简化任务。