michael@0: var arr = []; michael@0: michael@0: function f() {} michael@0: michael@0: function g(n, h) { michael@0: var a = f; michael@0: if (n <= 0) michael@0: return f; michael@0: michael@0: var t = g(n - 1, h); michael@0: var r = function(x) { michael@0: if (x) michael@0: return a; michael@0: return a(h(function() { return t(); })); michael@0: }; michael@0: arr.push(r); michael@0: return r; michael@0: } michael@0: michael@0: g(80, f); michael@0: g(80, f); michael@0: g(80, f); michael@0: for (var i = 0; i < arr.length; i++) michael@0: assertEq(arr[i](1), f);