0
我正在努力解决为什么这不起作用。使用SWI-Prolog,我试图:序言:如何在下一条规则中使用一条规则的答案
- 使用people(List)规则从女性(姓名,eee)事实创建女性名字列表(名为List)。
- 使用重复(列表,元)裁定找到人(名单)生成列表中的任何重复的名字
双方人民和重复规则对自己工作得很好,但是当我尝试结合他们的程序总是在使用颂歌的情况下返回false,应该返回true。
female(carol,eee).
female(clare,eee).
female(mel,eee).
female(grace,eee).
female(clare,eee).
female(carol,eee).
%% duplicate(List, Element) is true for every matching pair of _Element_ in _List_
duplicate([First|Rest], Element) :-
duplicate_1(Rest, First, Element).
% First occurrence
duplicate_1([This|Rest], X, X) :- % first occurrence
duplicate_2(Rest, This, X).
duplicate_1([This|Rest], _, X) :- % look further for first occurrence
duplicate_1(Rest, This, X).
% Second occurrence
duplicate_2(_, X, X). % second occurrence
duplicate_2([This|Rest], _, X) :- % look further for second occurrence
duplicate_2(Rest, This, X).
people(List) :- findall(X, female(X,eee), List).
我试图进入终端:
?- people(Y), duplicate(Y, carol).
任何帮助,将不胜感激!