JavaScript Y combinator
var Y=function(g){return function(f){return f(f)}(function(f){
return g(function(){return f(f).apply(null, arguments)})})}
var factorial=Y(function(h){return function(n){return ( n
