function (builder) { return function (n) { return builder(builder)(n); } }( function (recurse) { return function (n) { if (0 == n) return 1; else return n * recurse(recurse)(n); }; } )( 5 // THIS is the factorial to compute );