我对 不动点组合器 的世界是新手,我猜它们用于对匿名 lambda 进行递归,但我还没有真正使用过它们,甚至还没有完全理解它们。
我已经在Javascript中看到了一个Y组合子的例子,但我尝试运行时无法成功。
问题是,有没有人能够直观地回答以下问题:
- 什么是不动点组合器(不仅从理论上讲,而是从一些例子的背景下,揭示那种情况下真正的不动点是什么)?
- 除了 Y 组合子之外,还有哪些其他种类的不动点组合器?
加分题:如果例子不只在一种语言中,请优先考虑Clojure。
更新:
我已经在 Clojure 中找到了一个简单的例子,但仍然很难理解Y组合子本身:
(defn Y [r]
((fn [f] (f f))
(fn [f]
(r (fn [x] ((f f) x))))))
虽然这个例子非常简洁,但我发现很难理解函数内部发生了什么。任何提供的帮助都将是有用的。