gpt4 book ai didi

clojure - Clojure 中的嵌套部分

转载 作者:行者123 更新时间:2023-12-04 14:46:58 24 4
gpt4 key购买 nike

如何使用嵌套的 partial 评估数据结构:((partial (partial - 3)6)9)。内部的 partial 产生 -3,然后我们有 ((partial -3)9)。但是为什么 partial 会产生 (-3 - 9) 呢?它从哪里得到减法指令?

我想要一些有关 Clojure 读取和评估此数据表示的方式的帮助。

最佳答案

在评估这个表达式的过程中调用((partial - 3) 6)的说法是不正确的,这是误解的核心。

为了更简单,让我们分解一下:

((partial (partial - 3) 6) 9)

...相反,将其重写为:

(let [p1 (partial - 3)]
((partial p1 6) 9)

现在,(partial p1 6) 返回什么?一个调用 p1 的函数,其第一个参数是 6,并附加任何后续参数。因此,我们可以再次将其写得更冗长:

(let [p1 (partial - 3)
p2 (partial p1 6)]
(p2 9)

因此,(p2 9) 调用 (p1 6 9),后者又调用 (- 3 6 9)(- 3 6) 永远不会在执行过程中的任何地方调用,因此 - 的初始函数调用永远不会被消耗,直到所有参数都存在的最终调用。

(实际实现可能会优化中间调用,将 p1 的参数折叠到 p2 中,但无需将此类优化合并到概念模型中;行为等同于上述)。

关于clojure - Clojure 中的嵌套部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31396970/

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