【发布时间】:2014-09-30 12:04:54
【问题描述】:
-
这是 lambda 演算中的一个基本 y 组合子:
Y f = (\x -> f (x x)) (\x -> f (x x))
即 Clojure 中的类似内容:
(defn Y [f]
((fn [x] (x x))
(fn [x]
(f (fn [& args]
(apply (x x) args))))))
(def fac
(fn [f]
(fn [n]
(if (zero? n) 1 (* n (f (dec n)))))))
(def fib
(fn [f]
(fn [n]
(condp = n
0 0
1 1
(+ (f (dec n))
(f (dec (dec n))))))))
这是 y-Combinator 的另一个表达式(参数的第 2 步)
我们已经编码了图灵完备的语言(因为我们使用了 y-Combinator)(论证的第 3 步)
我的问题是:为什么 y-combinator 提供图灵等价性? 看来这只是一个论点的假设。
【问题讨论】:
标签: clojure lambda-calculus turing-complete y-combinator