我正在研究Prolog程序。我以粉丝(姓名,喜欢的小说列表)的形式得到了很多事实。我正在编写一个程序,该程序将告诉三个人(莎莉,马克和罗伯)在没有重复书名的情况下的共同点。我了解如何实现两个人之间的交集(如下所示),但我不知道如何从这里继续。
mutual_novels(Book) :-
fan(sally,S),
fan(mark,M),
fan(rob,R),
novel(Book, _),
member(Book,P),
member(Book,R).
答案 0 :(得分:0)
您的方法很好,Prolog将直接统一Book变量,因此您只需再添加一个 member 子句:
mutual_novels(Book) :-
fan(sally,S),
fan(mark,M),
fan(rob,R),
novel(Book, _),
member(Book,S),
member(Book,R),
member(Book,M).
谓词只会给您断言它的实例Book(同时属于三个列表的成员)。