Пролог: "\+ memberchk" внутри "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
, но не подведет.
Есть идеи, как это сделать? Спасибо!