从使用 Findall 生成的列表中删除重复项



我正在通过提出一个非常简单的数据库来练习Prolog,该数据库记录了谁发送和接收了电子邮件。

我使用预先指定X的接收器findall创建了一个列表。

使用您的列表/2:

all_receivers(X,Uniques) :- findall(Y,(email(X,Y)),List),list(List,Uniques).

但最简单的方法是排序/2,或更好的组/3

all_receivers(X,List) :- setof(Y,X^(email(X,Y)),List).

相关内容

  • 没有找到相关文章

最新更新