Skip to content

Instantly share code, notes, and snippets.

@Peaker
Last active February 25, 2016 23:16
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Peaker/85d4c3c5d68bd938a317 to your computer and use it in GitHub Desktop.
Save Peaker/85d4c3c5d68bd938a317 to your computer and use it in GitHub Desktop.
With slow wrapping...
var o = Object.freeze;
var logResult = function (scope,exprId,result) { return result;};
var logNewScope = function (parentScope,childScope,lamId) {};
var scopeId_0 = 0;
var scopeCounter = 1;
var logobj = function (obj) {
for (var key in obj) console.log(key + " = " + obj[key]);
};
var wrap = function (fast,slow) {
var count = 0;
var callee = function () {
count += 1;
if (count > 10) {
callee = fast;
return fast.apply(this,arguments);
}
return slow.apply(this,arguments);
};
return function () {
return callee.apply(this,arguments);
};
};
var log = function (exprId,result) { return logResult(scopeId_0,exprId,result);};
var greaterequals = function (i3) {
return o({tag: i3.infixl >= i3.infixr ? "True" : "False"});
};
var plus = function (i5) { return i5.infixl + i5.infixr;};
var dotdot = wrap(function (local_10) {
return function (local_11) {
var x = greaterequals(o({infixl: local_10.begin
,infixr: local_10.end}));
switch (x.tag)
{
case "False":
var local_12 = x.data;
return o({tag: "NonEmpty"
,data: o({head: local_10.begin
,tail: dotdot(o({begin: plus(o({infixl: local_10.begin
,infixr: 1.0}))
,end: local_10.end}))})});
case "True":
var local_13 = x.data;
return o({tag: "Empty",data: o({})});
default:
throw "Unhandled case? This is a type error!";
}
};
}
,function (local_1) {
var scopeId_1 = scopeCounter++;
logNewScope(scopeId_0,scopeId_1,5925902166653062041);
return wrap(function (local_7) {
var x = greaterequals(o({infixl: local_1.begin
,infixr: local_1.end}));
switch (x.tag)
{
case "False":
var local_8 = x.data;
return o({tag: "NonEmpty"
,data: o({head: local_1.begin
,tail: dotdot(o({begin: plus(o({infixl: local_1.begin
,infixr: 1.0}))
,end: local_1.end}))})});
case "True":
var local_9 = x.data;
return o({tag: "Empty",data: o({})});
default:
throw "Unhandled case? This is a type error!";
}
}
,function (local_2) {
var scopeId_2 = scopeCounter++;
logNewScope(scopeId_1,scopeId_2,-323806584424475819);
var log = function (exprId,result) {
return logResult(scopeId_2,exprId,result);
};
return log(-4992618569979293327
,function () {
var x = log(7208037054330770351
,greaterequals(o({infixl: local_1.begin
,infixr: local_1.end})));
switch (x.tag)
{
case "False":
var local_4 = x.data;
return o({tag: "NonEmpty"
,data: o({head: local_1.begin
,tail: log(6287569427529477764
,dotdot(o({begin: log(-6427391551676970109
,plus(o({infixl: local_1.begin
,infixr: 1.0})))
,end: local_1.end})))})});
case "True":
var local_6 = x.data;
return o({tag: "Empty",data: o({})});
default:
throw "Unhandled case? This is a type error!";
}
}());
});
});
var percent = function (i14) { return i14.infixl % i14.infixr;};
var equalsequals = function (i15) {
return o({tag: i15.infixl === i15.infixr ? "True" : "False"});
};
var pipepipe = wrap(function (local_20) {
var x = local_20.l;
switch (x.tag)
{
case "False":
return local_20.r(x.data);
case "True":
var local_21 = x.data;
return o({tag: "True",data: o({})});
default:
throw "Unhandled case? This is a type error!";
}
}
,function (local_18) {
var scopeId_1 = scopeCounter++;
logNewScope(scopeId_0,scopeId_1,-6133231554742192286);
var log = function (exprId,result) {
return logResult(scopeId_1,exprId,result);
};
return log(-5740834008974109774
,function () {
var x = local_18.l;
switch (x.tag)
{
case "False":
return local_18.r(x.data);
case "True":
var local_19 = x.data;
return o({tag: "True",data: o({})});
default:
throw "Unhandled case? This is a type error!";
}
}());
});
var filter = wrap(function (local_34) {
return function (local_35) {
var x = local_34.stream(o({}));
switch (x.tag)
{
case "NonEmpty":
var local_36 = x.data;
var rest = filter(o({stream: local_36.tail
,keep: local_34.keep}));
var x = local_34.keep(local_36.head);
switch (x.tag)
{
case "False":
var local_37 = x.data;
return rest(o({}));
case "True":
var local_38 = x.data;
return o({tag: "NonEmpty"
,data: o({head: local_36.head,tail: rest})});
default:
throw "Unhandled case? This is a type error!";
}
case "Empty":
var local_39 = x.data;
return o({tag: "Empty",data: o({})});
default:
throw "Unhandled case? This is a type error!";
}
};
}
,function (local_23) {
var scopeId_1 = scopeCounter++;
logNewScope(scopeId_0,scopeId_1,-8971661839422461279);
return wrap(function (local_29) {
var x = local_23.stream(o({}));
switch (x.tag)
{
case "NonEmpty":
var local_30 = x.data;
var rest = filter(o({stream: local_30.tail
,keep: local_23.keep}));
var x = local_23.keep(local_30.head);
switch (x.tag)
{
case "False":
var local_31 = x.data;
return rest(o({}));
case "True":
var local_32 = x.data;
return o({tag: "NonEmpty"
,data: o({head: local_30.head
,tail: rest})});
default:
throw "Unhandled case? This is a type error!";
}
case "Empty":
var local_33 = x.data;
return o({tag: "Empty",data: o({})});
default:
throw "Unhandled case? This is a type error!";
}
}
,function (local_24) {
var scopeId_2 = scopeCounter++;
logNewScope(scopeId_1,scopeId_2,-163845330261670480);
var log = function (exprId,result) {
return logResult(scopeId_2,exprId,result);
};
return log(6061648193727092308
,function () {
var x = log(949283622367290487
,local_23.stream(o({})));
switch (x.tag)
{
case "NonEmpty":
var local_25 = x.data;
return log(5625032387065972276
,function (rest) {
return log(-5967669244916703453
,function () {
var x =
log(4372896222979767977
,local_23.keep(local_25.head));
switch (x.tag)
{
case "False":
var local_26 =
x.data;
return log(-7540212005543445091
,rest(o({})));
case "True":
var local_27 =
x.data;
return o({tag: "NonEmpty"
,data: o({head: local_25.head
,tail: rest})});
default:
throw "Unhandled case? This is a type error!";
}
}());
}(log(-827753473331398148
,filter(o({stream: local_25.tail
,keep: local_23.keep})))));
case "Empty":
var local_28 = x.data;
return o({tag: "Empty",data: o({})});
default:
throw "Unhandled case? This is a type error!";
}
}());
});
});
var reduce = wrap(function (local_45) {
var x = local_45.stream2(o({}));
switch (x.tag)
{
case "NonEmpty":
var local_46 = x.data;
return reduce(o({initial: local_45.binop(o({item: local_46.head
,acc: local_45.initial}))
,binop: local_45.binop
,stream2: local_46.tail}));
case "Empty":
var local_47 = x.data;
return local_45.initial;
default:
throw "Unhandled case? This is a type error!";
}
}
,function (local_42) {
var scopeId_1 = scopeCounter++;
logNewScope(scopeId_0,scopeId_1,-1985243521857158396);
var log = function (exprId,result) {
return logResult(scopeId_1,exprId,result);
};
return log(-119052579385996916
,function () {
var x = log(6170907899453504391,local_42.stream2(o({})));
switch (x.tag)
{
case "NonEmpty":
var local_43 = x.data;
return log(-6336787548045281696
,reduce(o({initial: log(3286724986822515227
,local_42.binop(o({item: local_43.head
,acc: local_42.initial})))
,binop: local_42.binop
,stream2: local_43.tail})));
case "Empty":
var local_44 = x.data;
return local_42.initial;
default:
throw "Unhandled case? This is a type error!";
}
}());
});
var sum = wrap(function (stream1) {
return reduce(o({initial: 0.0
,binop: function (local_48) {
return plus(o({infixl: local_48.item
,infixr: local_48.acc}));
}
,stream2: stream1}));
}
,function (stream1) {
var scopeId_1 = scopeCounter++;
logNewScope(scopeId_0,scopeId_1,-5172572520143317852);
var log = function (exprId,result) {
return logResult(scopeId_1,exprId,result);
};
return log(-793714540788373937
,reduce(o({initial: 0.0
,binop: wrap(function (local_41) {
return plus(o({infixl: local_41.item
,infixr: local_41.acc}));
}
,function (local_40) {
var scopeId_2 = scopeCounter++;
logNewScope(scopeId_1
,scopeId_2
,8344490488926719171);
var log = function (exprId,result) {
return logResult(scopeId_2
,exprId
,result);
};
return log(-6627612094508236225
,plus(o({infixl: local_40.item
,infixr: local_40.acc})));
})
,stream2: stream1})));
});
var euler1 = log(-1663278307534711102
,sum(log(2821191715151759931
,filter(o({stream: log(-5195695921270976819
,dotdot(o({begin: 1.0,end: 1000.0})))
,keep: wrap(function (x) {
return pipepipe(o({l: equalsequals(o({infixl: percent(o({infixl: x
,infixr: 3.0}))
,infixr: 0.0}))
,r: function (local_22) {
return equalsequals(o({infixl: percent(o({infixl: x
,infixr: 5.0}))
,infixr: 0.0}));
}}));
}
,function (x) {
var scopeId_1 = scopeCounter++;
logNewScope(scopeId_0
,scopeId_1
,-1636613393095659109);
var log = function (exprId,result) {
return logResult(scopeId_1
,exprId
,result);
};
return log(-505596708036438376
,pipepipe(o({l: log(5826503773753533764
,equalsequals(o({infixl: log(-3865852555698789173
,percent(o({infixl: x
,infixr: 3.0})))
,infixr: 0.0})))
,r: wrap(function (local_17) {
return equalsequals(o({infixl: percent(o({infixl: x
,infixr: 5.0}))
,infixr: 0.0}));
}
,function (local_16) {
var scopeId_2 =
scopeCounter++;
logNewScope(scopeId_1
,scopeId_2
,3081299239022622887);
var log =
function (exprId
,result) {
return logResult(scopeId_2
,exprId
,result);
};
return log(3856425431129488079
,equalsequals(o({infixl: log(-2734923779022658820
,percent(o({infixl: x
,infixr: 5.0})))
,infixr: 0.0})));
})})));
})})))));
var repl = euler1;
logobj(repl);
console.log(repl);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment