gpt4 book ai didi

clojure - 对于 core.logic 来说,非关系在实践中意味着什么?

转载 作者:行者123 更新时间:2023-12-02 21:18:33 24 4
gpt4 key购买 nike

当尝试通过 API 文档理解 core.logic 时,我遇到了非关系目标和关系目标。我不知道这在实践中意味着什么,也不知道为什么注释目标(无论它们是否相关)很重要。

您能否举例说明如何根据目标是否相关来不同地使用这些目标?

最佳答案

为了解释非关系意味着什么,我们需要重新回顾一下 relational意思是。

如果您考虑函数式编程中的纯函数,它们始终返回一个值,并且对于相同的输入参数,将返回相同的输出值。

举个例子:

 f(x) = x + 2

此函数始终返回 5输入值3 .

但是在很多情况下函数是不合适的,例如平方根,有 2 个结果。

 sqrt(4) => 2 and -2

或者将数字除以零,但没有结果

将关系视为广义函数,您可以:

  • 任意数量的结果(零个或多个)
  • 不确定性
  • 每次调用的输入/输出参数可以不同
  • 如果关系为 true,则关系返回 true,否则返回 false

为了将函数转换为关系,我们将结果设置为新参数:

(cons 1 [2]) => [1 2]

(conso 1 [2] [1 2]) => true

但现在conso如果一个参数是变量,则可以用作生成器:

 (run 1 [x]
(conso 1 [2] x)) => ([1 2])

(run 1 [x]
(conso 1 x [1 2])) => ([2])

在逻辑编程中,统一回答了以下问题:要满足这种关系,世界应该是什么样子

一个non-relational运算符或函数是不作为关系而是作为简单函数工作的运算符,因此不可能将任何参数作为变量进行统一。

例如 > 等运算符就会发生这种情况和<之前CLP在命名空间 clojure.core.logic.fd 中引入了有限域.

您可以在 this talk 中找到许多概念。作者:Ambrose Bonnaire-Sergeant。

关于clojure - 对于 core.logic 来说,非关系在实践中意味着什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33787512/

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