gpt4 book ai didi

Prolog 程序返回 yes 而不是 value

转载 作者:行者123 更新时间:2023-12-02 20:40:41 25 4
gpt4 key购买 nike

我收到以下事件:item(C,X,G,P),(其中 C 是产品的编号, X 是名称,G 是价格,P 是成本)。
当我直接在 prolog 控制台上使用命令 item(n3001,_,_,P) 时,我得到答案
G = 1.25 X = 100 但是当我写下方程 p3(C)-: item(C,_,_,P). 然后我查阅了得到的文本作为回答
我的问题澄清了,为什么一次我得到我想要的 P 值,而另一次我得到它是真还是假?

最佳答案

Prolog 中没有返回值,p3/1 不构成函数而是关系。你的定义

p3(C) :-
item(C,_,_,P).

内容为:如果 item(C,_,_,P) 成功,则 p3(C) 也会成功。为了便于讨论,我们假设您的代码包含以下事实:

item(n3001,100,1.25,1).

如果您查询

?- p3(n3001).

Prolog 将规则头部的 Cn3001 统一起来,然后尝试您的目标 item(C,_,_,P)成功了。因此规则成功并且 Prolog 告诉你:

   ?- p3(n3001).
yes

如果您想知道n3001对应的价格,您必须定义一个规则,其中P也出现在规则的头部,例如:

p3(C,P) :-
item(C,_,_,P).

如果您查询,您将看到与 n3001 对应的 P 值:

   ?- p3(n3001,P).
P = 1

如果您直接查询 item/4,P 会出现在参数中,因此您会看到满足您查询的替代项:

   ?- item(n3001,_,_,P).
P = 1

关于Prolog 程序返回 yes 而不是 value,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43761934/

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