gpt4 book ai didi

Prolog为什么以下术语不统一?

转载 作者:行者123 更新时间:2023-12-01 22:17:54 26 4
gpt4 key购买 nike

prolog中=用于统一,据我了解这两个术语是否可以匹配可能在变量实例化的帮助下,它们是统一的。

那么为什么下面的查询失败了

?- 2+2 = 4.

尽管 2+2 产生 4,这与另一项的数字相同。

最佳答案

作为其他帖子的补充,我想建议 (#=)/2 在推理 时作为 (is)/2 的更具声明性的替代方案整数

(#=)/2 表示整数表达式算术相等。这涉及一个评估 步骤,因此不同于句法 平等。在您的情况下,您期望前者,但得到后者。

使用示例,使用 GNU Prolog:

| ?- 4 #= 2+2.yes

(#=)/2 的主要优点是它可以在所有 方向上工作:

| ?- 4 #= 2+X.X = 2

相比之下,我们用 (is)/2 得到:

| ?- 4 is 2+X.uncaught exception: error(instantiation_error,(is)/2)

当初学者第一次学习算术时,此类问题非常常见(请参阅 ),因此我建议您至少在开始时就开始使用更多声明性谓词。

关于Prolog为什么以下术语不统一?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43140744/

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