想象一下,我有以下知识库,它为每个人提供了他的名字和年龄。
person(mary, 39).
person(john, 24).
person(sandy, 17).
现在,我想检索所有 20 岁以上的人。此外,我只想收集他们的名字而不是他们的年龄。在这里,我想检索mary
和john
。
通常如何在 Prolog 中,更具体地说在 SWI-Prolog 中执行此操作?
如果我们使用非匿名变量,例如:
?- person(X, Y), Y > 20.
Prolog 会给我X
和Y
我不想要的值Y
。
我不能使用匿名变量_
,因为 Prolog 不能链接它的两个实例。以下给出了错误:
?- person(X, _), _ > 20.
那么,如何做到这一点呢?