JavaScriptでYコンビネータ
function Y(M){ return (function(f){ return M(function(a){ return f(f)(a); }); }) (function(f){ return M(function(a){ return f(f)(a); }); }); } function fib(r){ return function(n){ return (n <= 2)? 1 : r(n-1) + r(n-2); }; } console.log(Y(fib)(10));