gpt4 book ai didi

clojure - 定点组合器的用法?为什么这里堆栈溢出?

转载 作者:行者123 更新时间:2023-12-04 15:37:38 24 4
gpt4 key购买 nike

我对某事感到困惑。我想生成一个示例(在 Clojure 中),演示如何使用定点组合器来评估一个序列的不动点,该序列在无数次应用后数学上收敛,但实际上在有限步数后收敛到浮点的有限精度。我显然在这里遗漏了一些东西。

(defn Y [r]
((fn [f] (f f))
(fn [f]
(r (fn [x] ((f f) x))))))

(defn simple-convergent [func]
(fn [x]
(if (zero? x)
0.0
(* 0.5 (func x)))))

然后我可以得到
user=> ((Y simple-convergent) 0.)
0.0
user=> ((Y simple-convergent) 0.2)
java.lang.StackOverflowError (NO_SOURCE_FILE:0)

我不明白这个堆栈溢出。更一般地说,与我之前的帖子相关,我想知道是否有人可以提出一个“正确”版本的定点组合器,它可以用来以这种方式近似序列的定点。

最佳答案

感谢布赖恩·卡珀(Brian Carper)的(正确)回答作为评论。修正后的代码

(defn simple-convergent [func]
(fn [x]
(if (zero? x)
0.0
(func (* 0.5 x)))))

表现得像我预期的那样。我的下一个项目是尝试构建一个可以找到不稳定不动点的定点组合器。我不相信上面实现的 Y 组合器可以做到这一点。

关于clojure - 定点组合器的用法?为什么这里堆栈溢出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3242288/

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