假设我有这些事实:
person(fred).
person(jim).
person(mary).
is_person(person(_)).
我想得到一个像这样的列表:
[person(fred), person(jim), person(mary)]
但我的查询findall/3
没有给出预期的结果:
?- findall(Person,is_person(Person),ListOfPeople).
ListOfPeople = [person(_5034)].
与以下类似bagof/3
:
?- bagof(Person,is_person(Person),ListOfPeople).
ListOfPeople = [person(_5940)].
我不明白为什么findall/3
并且bagof/3
表现得像这样。