gpt4 book ai didi

prolog - 为什么 `f(a)=a` 失败但 `f(X)=X` 在序言中成功?

转载 作者:行者123 更新时间:2023-12-04 03:39:23 24 4
gpt4 key购买 nike

我遇到了以下情况:

?- f(X) = X.
X = f(X).

?- f(a) = a.
false.

为什么统一适用于 f(X) = X,但不适用于 f(a) = a?是不是因为第一个简单地将 f(X) 的返回值命名为 X,而第二个尝试检查 f(a) 的返回值是否> 是 a 吗?但是 f() 在这里是未定义的!!另外,我想,序言中没有“返回值”这样的概念。那么,这是怎么回事?

最佳答案

在您的第一个示例中,X 是一个变量(标识符以大写字母开头,请查找)。自由变量与任何东西统一。 (几乎任何事情。您正在创建一个循环项,如果您尝试“与发生检查统一”,这将不起作用,请查找)。

在你的第二个例子中,a 是一个原子。它只与自由变量或自身结合。由于 f(a) 不是 a 统一失败。

你是正确的,没有“返回值”这样的东西。您可能会将目标的成功或失败视为“返回值”,但我不知道这有多大帮助。

无论哪种方式,Prolog 中都没有f()。这不是一个功能。你不需要定义它。它只是一个复合术语(查找)。在某种程度上,它是一种数据结构。

关于prolog - 为什么 `f(a)=a` 失败但 `f(X)=X` 在序言中成功?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66328584/

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