我是 prolog 的初学者,我正在尝试返回结果列表。假设我有属于某个人的物品,即。
项目(人1,苹果)。
项目(person1,橙色)。
我希望能够创建一个可以返回属于该人的项目列表的函数。目前我有:
getitems(Person,Result):-items(Person,N),Result 为 N。
这仅返回第一项。我怎样才能让它返回属于该人的所有项目的列表?
谢谢。
被问了很多次,正确的命名法是“Finding all solution to a goal”,例如,从 SWI-Prolog 实现中,finding all solutions。
简而言之,
bagof(Item, items(person1, Item), Items).
本节中的谓词findall
、bagof
和setof
都略有不同并有其用途。Stackoverflow 上有很多关于如何使用它们的示例。