了解成员函数的工作方式

时间:2019-03-01 13:01:43

标签: prolog

我正在研究Prolog程序。我以粉丝(姓名,喜欢的小说列表)的形式得到了很多事实。我正在编写一个程序,该程序将告诉三个人(莎莉,马克和罗伯)在没有重复书名的情况下的共同点。我了解如何实现两个人之间的交集(如下所示),但我不知道如何从这里继续。

mutual_novels(Book) :-  
   fan(sally,S),
   fan(mark,M),
   fan(rob,R),
   novel(Book, _),
   member(Book,P),
   member(Book,R).

1 个答案:

答案 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(同时属于三个列表的成员)。