Този отговор казва
Ето един основен 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-комбинатора (стъпка 2 от аргумента)
Ние кодирахме пълен език на Тюринг (тъй като използвахме y-Combinator) (стъпка 3 от аргумента)
Въпросът ми е: Защо y-комбинаторът осигурява еквивалентност на Тюринг? Изглежда, че това е само предположение на аргумента.