gpt4 book ai didi

prolog - 前言。在查询中,如何在结果中不需要的变量上加条件?

转载 作者:行者123 更新时间:2023-12-04 13:22:29 26 4
gpt4 key购买 nike

想象一下,我拥有以下知识库,该知识库为每个人提供了他的名字和年龄。

person(mary, 39).
person(john, 24).
person(sandy, 17).

现在,我想检索所有20岁以上的人。此外,我只想收集他们的名字,而不是他们的年龄。在这里,我想检索 maryjohn

通常在Prolog中,更具体地说在SWI-Prolog中,该如何做?

如果我们使用非匿名变量,例如:
?- person(X, Y), Y > 20.

Prolog将为我提供 XY的值,而我不希望 Y

我无法使用匿名变量 _,因为Prolog无法链接其两个实例。以下给出了一个错误:
?- person(X, _), _ > 20.

那么,该怎么做呢?

最佳答案

为什么不定义谓词

ofintrest(X):- person(X,Y),Y>20.

查询
ofintrest(X).

如果您不想定义谓词,也可以使用双重否定
person(X,_) ,\+(\+ (person(X,Y), Y>20))

关于prolog - 前言。在查询中,如何在结果中不需要的变量上加条件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34892545/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com