Gab*_*ell 6 stack-overflow functional-programming clojure y-combinator fixpoint-combinators
我很困惑.我想生成一个例子(在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)))))
Run Code Online (Sandbox Code Playgroud)
我可以得到
user=> ((Y simple-convergent) 0.)
0.0
user=> ((Y simple-convergent) 0.2)
java.lang.StackOverflowError (NO_SOURCE_FILE:0)
Run Code Online (Sandbox Code Playgroud)
我不明白这个堆栈溢出.更一般地说,与我之前的帖子有关,我想知道是否有人可以呈现定点组合器的"正确"版本,其可以用于以这种方式近似序列的固定点.
感谢布莱恩·卡珀(Brian Carper)的(正确)答案作为评论。更正后的代码
(defn simple-convergent [func]
(fn [x]
(if (zero? x)
0.0
(func (* 0.5 x)))))
Run Code Online (Sandbox Code Playgroud)
表现如我所料。我的下一个项目是尝试构建一个定点组合器来找到不稳定的定点。我不相信上面实现的 Y 组合器可以做到这一点。
归档时间: |
|
查看次数: |
503 次 |
最近记录: |