Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Y = λf.(λx.f (x x)) (λx.f (x x))
(define Y (λ (f) ((λ (rec) (f (λ arg (apply (rec rec) arg)))) (λ (rec) (f (λ arg (apply (rec rec) arg)))))))
на порядок понятнее и красивееЯ с лиспом не знаком, и пока искал пару 3-й скобке в вашем втором выражении окончательно запутался. В статье же все предельно доступно, на простом и понятном многим языке.
var fact = Y(#(callee) {
#(num) { num > 1 ? num * callee(num - 1) : 1 }
});
var Y = # (h) {
# (# (f) {
f(f)
})(# (f) {
h(# (n) { # f(f)(n) })
})
};
var fact = Y(# (callee) {
#(num) { num > 1 ? num * callee(num - 1) : 1 }
});
Получение Y-комбинатора в 7 простых шагов