我是prolog的初学者,我正在尝试返回结果列表。
假设我有属于某人的物品,即。
项目(PERSON1,苹果)。
项目(PERSON1,橙色)。
我希望能够创建一个可以返回属于该人的项目列表的函数。 目前我有:
getitems(人,结果): - 项目(人,N),结果为N。
这只返回第一项。 如何让它返回属于该人的所有项目的列表?
感谢。
答案 0 :(得分:1)
多次问道,正确的命名法是“找到目标的所有解决方案”,例如,来自SWI-Prolog实施,finding all solutions。
简而言之,
bagof(Item, items(person1, Item), Items).
本节中的谓词findall
,bagof
和setof
的行为略有不同,并且有其用途。 Stackoverflow上有很多关于如何使用它们的例子。