Prolog:" \ + memberchk"内部" setof"

时间:2015-05-30 11:32:01

标签: prolog prolog-setof

我有一些以下形式的Prolog代码:

setof(Element,some_function(P,Element,C),Elements)

这样,Element解决方案中的some_function项的所有实例都会收集在列表Elements中。

我现在希望使用memberchk对此进行改进,以便只有Element的任何实例化只会添加到Elements,如果它不存在于列表List上}。

我尝试了以下内容:

setof(Element,some_function(P,Element,C,List),Elements)

................

some_function(P,Element,C,List) :-
.... the function as it was ....,
\+ memberchk(Element,List).

这确实有效,因为只添加了不在List上的元素。但问题是setof现在因术语Element的所有实例化都已在List上而失败。虽然我希望它返回一个空列表Elements,但不会失败。

关于如何做到这一点的任何想法?谢谢!

0 个答案:

没有答案