RosettaCodeData/Task/Y-combinator/JavaScript/y-combinator-1.js

27 lines
531 B
JavaScript
Raw Permalink Normal View History

2013-04-11 01:07:29 -07:00
function Y(f) {
2015-02-20 00:35:01 -05:00
var g = f((function(h) {
return function() {
var g = f(h(h));
return g.apply(this, arguments);
}
})(function(h) {
return function() {
var g = f(h(h));
return g.apply(this, arguments);
}
}));
2013-04-11 01:07:29 -07:00
return g;
}
2015-11-18 06:14:39 +00:00
var fac = Y(function(f) {
return function (n) {
return n > 1 ? n * f(n - 1) : 1;
};
});
var fib = Y(function(f) {
return function(n) {
return n > 1 ? f(n - 1) + f(n - 2) : n;
};
});