((function (fn) { return (function (g) { return g(g); })(function (h) { return fn(function (n) { return h(h)(n); }); }); })(function (f) { return function (n) { return n === 1 ? 1 : n + f(n - 1); }; }))(5); // => 15