Пролог: "\+ 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, но не подведет.

Есть идеи, как это сделать? Спасибо!

0 ответов

Другие вопросы по тегам