Skip to content

Instantly share code, notes, and snippets.

@Peaker
Created February 25, 2016 16:46
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/f73988434bb21bfbeca8 to your computer and use it in GitHub Desktop.
Save Peaker/f73988434bb21bfbeca8 to your computer and use it in GitHub Desktop.
Lamdu-generated JS
var greaterequals = function (i3) {
return {tag: i3.infixl >= i3.infixr ? "True" : "False",data: undefined};
};
var plus = function (i5) { return i5.infixl + i5.infixr;};
var dotdot = function (local_1) {
return function (local_2) {
var x = greaterequals(Object.freeze({infixl: local_1.begin
,infixr: local_1.end}));
switch (x.tag)
{
case "False":
var local_4 = x.data;
return {tag: "NonEmpty"
,data: Object.freeze({head: local_1.begin
,tail: dotdot(Object.freeze({begin: plus(Object.freeze({infixl: local_1.begin
,infixr: 1.0}))
,end: local_1.end}))})};
case "True":
var local_6 = x.data;
return {tag: "Empty",data: Object.freeze({})};
default:
throw "Unhandled case? This is a type error!";
}
};
};
var percent = function (i7) { return i7.infixl % i7.infixr;};
var equalsequals = function (i8) {
return {tag: i8.infixl === i8.infixr ? "True" : "False",data: undefined};
};
var pipepipe = function (local_10) {
var x = local_10.l;
switch (x.tag)
{
case "False":
return local_10.r(x.data);
case "True":
var local_11 = x.data;
return {tag: "True",data: Object.freeze({})};
default:
throw "Unhandled case? This is a type error!";
}
};
var filter = function (local_12) {
return function (local_13) {
var x = local_12.stream(Object.freeze({}));
switch (x.tag)
{
case "NonEmpty":
var local_14 = x.data;
var rest = filter(Object.freeze({stream: local_14.tail
,keep: local_12.keep}));
var x = local_12.keep(local_14.head);
switch (x.tag)
{
case "False":
var local_15 = x.data;
return rest(Object.freeze({}));
case "True":
var local_16 = x.data;
return {tag: "NonEmpty"
,data: Object.freeze({head: local_14.head,tail: rest})};
default:
throw "Unhandled case? This is a type error!";
}
case "Empty":
var local_17 = x.data;
return {tag: "Empty",data: Object.freeze({})};
default:
throw "Unhandled case? This is a type error!";
}
};
};
var reduce = function (local_19) {
var x = local_19.stream2(Object.freeze({}));
switch (x.tag)
{
case "NonEmpty":
var local_20 = x.data;
return reduce(Object.freeze({initial: local_19.binop(Object.freeze({item: local_20.head
,acc: local_19.initial}))
,binop: local_19.binop
,stream2: local_20.tail}));
case "Empty":
var local_21 = x.data;
return local_19.initial;
default:
throw "Unhandled case? This is a type error!";
}
};
var sum = function (stream1) {
return reduce(Object.freeze({initial: 0.0
,binop: function (local_18) {
return plus(Object.freeze({infixl: local_18.item
,infixr: local_18.acc}));
}
,stream2: stream1}));
};
var euler1 = sum(filter(Object.freeze({stream: dotdot(Object.freeze({begin: 1.0
,end: 1000.0}))
,keep: function (x) {
return pipepipe(Object.freeze({l: equalsequals(Object.freeze({infixl: percent(Object.freeze({infixl: x
,infixr: 3.0}))
,infixr: 0.0}))
,r: function (local_9) {
return equalsequals(Object.freeze({infixl: percent(Object.freeze({infixl: x
,infixr: 5.0}))
,infixr: 0.0}));
}}));
}})));
{
var repl = euler1,
logobj = function (obj) {
for (var key in obj) console.log(key + " = " + obj[key]);
};
logobj(repl);
console.log(repl);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment