在prolog中建立一个列表

时间:2013-06-07 06:34:36

标签: list recursion prolog

我是prolog的初学者,我正在尝试返回结果列表。 假设我有属于某人的物品,即。
项目(PERSON1,苹果)。
项目(PERSON1,橙色)。

我希望能够创建一个可以返回属于该人的项目列表的函数。 目前我有:

getitems(人,结果): - 项目(人,N),结果为N。

这只返回第一项。 如何让它返回属于该人的所有项目的列表?

感谢。

1 个答案:

答案 0 :(得分:1)

多次问道,正确的命名法是“找到目标的所有解决方案”,例如,来自SWI-Prolog实施,finding all solutions

简而言之,

bagof(Item, items(person1, Item), Items).

本节中的谓词findallbagofsetof的行为略有不同,并且有其用途。 Stackoverflow上有很多关于如何使用它们的例子。