Javascript Y Combinator
Last Update
10/16/2005; 1:34:36 AM
A famous lambda trick, in Javascript:
// The Y Combinator
var Y=function (gen) {
return function(f) {return f(f)}(
function(f) {
return gen(function() {return f(f).apply(null, arguments)})})}
// An example
var fact=Y(function(h){
return function(n){
return (n<2)?1:n*h(n-1)}});
Not that you actually need a Y combinator of course. This is a shorter version the anonymous factorial function:
function(n){return (n<2)?1:n*arguments.callee(n-1)}