Y Combinators
by Trae
JavaScript
var y = function(le) {
return function(f){
return f(f);
}(function(f) {
return le(
function(x) {
return (f(f))(x);
}
);
});
};
var factor = y(function(fn){
return function(n){
console.log(n);
return n < 2?1:n*fn(n-1);
}
});
var fibbonaci = y(function(fn){
return function(n){
console.log(n);
return n <= 2?1:fn(n-1)+fn(n-2);
}
});
console.log(factor(5));
console.log(fibbonaci(5));