rendered paste bodyfunction Y(&$le) { return closure(get_defined_vars(), '$f')->scope(' return $f->call($f); ')->call(closure(get_defined_vars(), '$f')->scope(' return $le->call(closure(get_defined_vars(), \'$x\')->scope(\' return $f->call($f)->call($x); \')); '));}$factorial = Y(closure(array(), '$fac')->scope(' return closure(get_defined_vars(),\'$n\')->scope(\' return $n <= 2 ? $n : $n * $fac->call($n - 1); \');'));echo $factorial->call(5);/*Javascript Version:function Y(le) { return function (f) { return f(f); }(function (f) { return le(function (x) { return f(f)(x); }); });}var factorial = Y(function (fac) { return function (n) { return n <= 2 ? n : n * fac(n - 1); };});var number120 = factorial(5);*/