Skip to content

Instantly share code, notes, and snippets.

@rwaldron
Last active November 24, 2016 10:13
Show Gist options
  • Save rwaldron/8857389 to your computer and use it in GitHub Desktop.
Save rwaldron/8857389 to your computer and use it in GitHub Desktop.
function Y(le) {
return (function (f) {
return f(f);
}(function (f) {
return le(function (x) {
return f(f)(x);
});
}));
}
var factorial = Y(function (fac) {
return function (n) {
return n <= 2 ? n : n * fac(n - 1);
};
});
factorial(5); // 120
let Y =
(le => (f => f(f))
(f => le((...args) => f(f)(...args))));
let factorial =
Y(f => (n =>
(n < 2 ?
1 :
n * f(n - 1))));
factorial(5); // 120
(define (Y f)
((lambda (x) (x x))
(lambda (g)
(f (lambda args (apply (g g) args))))))
(define fac
(Y
(lambda (f)
(lambda (x)
(if (< x 2)
1
(* x (f (- x 1))))))))
(fac 5) ; 120
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment