UNPKG

dax

Version:
1,827 lines (1,826 loc) 111 kB
var create = (globals) => { var _G = Object.assign({}, globals || {}); _G._G = _G; _G.environment = [{}]; var nil63 = (x) => { return x === undefined || x === null; }; _G.nil63 = nil63; var is63 = (x) => { return ! nil63(x); }; _G.is63 = is63; var no = (x) => { return nil63(x) || x === false; }; _G.no = no; var yes = (x) => { return ! no(x); }; _G.yes = yes; var either = (x, y) => { if (is63(x)) { return x; } else { return y; } }; _G.either = either; var has63 = (l, k) => { return l.hasOwnProperty(k); }; _G.has63 = has63; var _35 = (x) => { var __n = x.length; if (number63(__n)) { return __n; } else { var __n1 = -1; var ____o = x; var __k = undefined; for (__k in ____o) { var __v = ____o[__k]; var __e; if (numeric63(__k)) { __e = parseInt(__k); } else { __e = __k; } var __k1 = __e; if (number63(__k1) && __k1 > __n1) { __n1 = __k1; } } return __n1 + 1; } }; _G._35 = _35; var none63 = (x) => { return _35(x) === 0; }; _G.none63 = none63; var some63 = (x) => { return _35(x) > 0; }; _G.some63 = some63; var one63 = (x) => { return _35(x) === 1; }; _G.one63 = one63; var two63 = (x) => { return _35(x) === 2; }; _G.two63 = two63; var hd = (l) => { return l[0]; }; _G.hd = hd; var type = (x) => { return typeof(x); }; _G.type = type; var type63 = (x, y) => { return type(x) === y; }; _G.type63 = type63; var string63 = (x) => { return type63(x, "string"); }; _G.string63 = string63; var number63 = (x) => { return type63(x, "number"); }; _G.number63 = number63; var boolean63 = (x) => { return type63(x, "boolean"); }; _G.boolean63 = boolean63; var function63 = (x) => { return type63(x, "function"); }; _G.function63 = function63; var symbol63 = (x) => { return type63(x, "symbol"); }; _G.symbol63 = symbol63; var obj63 = (x) => { return is63(x) && type63(x, "object"); }; _G.obj63 = obj63; var array63 = (x) => { return Array.isArray(x); }; _G.array63 = array63; var atom63 = (x) => { return nil63(x) || string63(x) || number63(x) || boolean63(x) || symbol63(x); }; _G.atom63 = atom63; var fresh = (x) => { var ____x = type(x); if ("object" === ____x) { if (nil63(x)) { return undefined; } else { if (array63(x)) { return []; } else { return {}; } } } else { if ("undefined" === ____x) { return []; } else { if ("symbol" === ____x) { return Symbol(); } else { if ("string" === ____x) { return ""; } else { if ("number" === ____x) { return 0; } } } } } }; _G.fresh = fresh; nan = 0 / 0; _G.nan = nan; inf = 1 / 0; _G.inf = inf; _inf = - inf; _G._inf = _inf; var nan63 = (n) => { return !( n === n); }; _G.nan63 = nan63; var inf63 = (n) => { return n === inf || n === _inf; }; _G.inf63 = inf63; var clip = (s, from, upto) => { return s.substring(from, upto); }; _G.clip = clip; var cut = (x, from, upto) => { var __l = fresh(x); var __j = 0; var __e1; if (nil63(from) || from < 0) { __e1 = 0; } else { __e1 = from; } var __i1 = __e1; var __n3 = _35(x); var __e2; if (nil63(upto) || upto > __n3) { __e2 = __n3; } else { __e2 = upto; } var __upto = __e2; while (__i1 < __upto) { __l[__j] = x[__i1]; __i1 = __i1 + 1; __j = __j + 1; } var ____o1 = x; var __k2 = undefined; for (__k2 in ____o1) { var __v1 = ____o1[__k2]; var __e3; if (numeric63(__k2)) { __e3 = parseInt(__k2); } else { __e3 = __k2; } var __k3 = __e3; if (! number63(__k3)) { __l[__k3] = __v1; } } return __l; }; _G.cut = cut; var keys = (x) => { var __t = {}; var ____o2 = x; var __k4 = undefined; for (__k4 in ____o2) { var __v2 = ____o2[__k4]; var __e4; if (numeric63(__k4)) { __e4 = parseInt(__k4); } else { __e4 = __k4; } var __k5 = __e4; if (! number63(__k5)) { __t[__k5] = __v2; } } return __t; }; _G.keys = keys; var edge = (x) => { return _35(x) - 1; }; _G.edge = edge; var inner = (x) => { return clip(x, 1, edge(x)); }; _G.inner = inner; var tl = (l) => { return cut(l, 1); }; _G.tl = tl; var char = (s, n) => { return s.charAt(n); }; _G.char = char; var code = (s, n) => { return s.charCodeAt(n); }; _G.code = code; var stringLiteral63 = (x) => { return string63(x) && char(x, 0) === "\""; }; _G.stringLiteral63 = stringLiteral63; var idLiteral63 = (x) => { return string63(x) && char(x, 0) === "|"; }; _G.idLiteral63 = idLiteral63; var add = (l, x) => { if (l.push) { l.push(x); } else { l[_35(l)] = x; } return undefined; }; _G.add = add; var drop = (l) => { if (l.pop) { return l.pop(); } else { var __i4 = edge(l); var __x1 = l[__i4]; delete l[__i4]; return __x1; } }; _G.drop = drop; var last = (l) => { return l[edge(l)]; }; _G.last = last; var almost = (l) => { return cut(l, 0, edge(l)); }; _G.almost = almost; var reverse = (l) => { var __l1 = fresh(l); var __n6 = edge(l); var ____o3 = l; var __k6 = undefined; for (__k6 in ____o3) { var __v3 = ____o3[__k6]; var __e5; if (numeric63(__k6)) { __e5 = parseInt(__k6); } else { __e5 = __k6; } var __k7 = __e5; if (number63(__k7)) { __k7 = __n6 - __k7; } __l1[__k7] = __v3; } return __l1; }; _G.reverse = reverse; var reduce = (f, x) => { if (none63(x)) { return undefined; } else { if (one63(x)) { return hd(x); } else { return f(hd(x), reduce(f, tl(x))); } } }; _G.reduce = reduce; var join = (...ls) => { var __ls = unstash(ls); var __r42 = fresh(hd(__ls)); var ____x2 = __ls; var ____i6 = 0; while (____i6 < _35(____x2)) { var __l11 = ____x2[____i6]; if (__l11) { var __n8 = _35(__r42); var ____o4 = __l11; var __k8 = undefined; for (__k8 in ____o4) { var __v4 = ____o4[__k8]; var __e6; if (numeric63(__k8)) { __e6 = parseInt(__k8); } else { __e6 = __k8; } var __k9 = __e6; if (number63(__k9)) { __k9 = __k9 + __n8; } __r42[__k9] = __v4; } } ____i6 = ____i6 + 1; } return __r42; }; _G.join = join; var find = (f, t) => { var ____o5 = t; var ____i8 = undefined; for (____i8 in ____o5) { var __x3 = ____o5[____i8]; var __e7; if (numeric63(____i8)) { __e7 = parseInt(____i8); } else { __e7 = ____i8; } var ____i81 = __e7; var __y = f(__x3); if (__y) { return __y; } } }; _G.find = find; var first = (f, l) => { var ____x4 = l; var ____i9 = 0; while (____i9 < _35(____x4)) { var __x5 = ____x4[____i9]; var __y1 = f(__x5); if (__y1) { return __y1; } ____i9 = ____i9 + 1; } }; _G.first = first; var in63 = (x, t) => { return find((y) => { return x === y; }, t); }; _G.in63 = in63; var pair = (l) => { var __l12 = fresh(l); var __i10 = 0; while (__i10 < _35(l)) { add(__l12, [l[__i10], l[__i10 + 1]]); __i10 = __i10 + 1; __i10 = __i10 + 1; } return __l12; }; _G.pair = pair; var sort = (l, f) => { var __e8; if (f) { __e8 = (a, b) => { if (f(a, b)) { return -1; } else { return 1; } }; } return l.sort(__e8); }; _G.sort = sort; var map = (f, x) => { var __t1 = fresh(x); var ____x6 = x; var ____i11 = 0; while (____i11 < _35(____x6)) { var __v5 = ____x6[____i11]; var __y2 = f(__v5); if (is63(__y2)) { add(__t1, __y2); } ____i11 = ____i11 + 1; } var ____o6 = x; var __k10 = undefined; for (__k10 in ____o6) { var __v6 = ____o6[__k10]; var __e9; if (numeric63(__k10)) { __e9 = parseInt(__k10); } else { __e9 = __k10; } var __k11 = __e9; if (! number63(__k11)) { var __y3 = f(__v6); if (is63(__y3)) { __t1[__k11] = __y3; } } } return __t1; }; _G.map = map; var keep = (f, x) => { return map((v) => { if (yes(f(v))) { return v; } }, x); }; _G.keep = keep; var keys63 = (t) => { var ____o7 = t; var __k12 = undefined; for (__k12 in ____o7) { var __v7 = ____o7[__k12]; var __e10; if (numeric63(__k12)) { __e10 = parseInt(__k12); } else { __e10 = __k12; } var __k13 = __e10; if (! number63(__k13)) { return true; } } return false; }; _G.keys63 = keys63; var empty63 = (t) => { var ____o8 = t; var ____i14 = undefined; for (____i14 in ____o8) { var __x7 = ____o8[____i14]; var __e11; if (numeric63(____i14)) { __e11 = parseInt(____i14); } else { __e11 = ____i14; } var ____i141 = __e11; return false; } return true; }; _G.empty63 = empty63; var stash = (args) => { if (args._stash) { return args; } else { if (keys63(args)) { var __l2 = []; var ____x8 = args; var ____i15 = 0; while (____i15 < _35(____x8)) { var __x9 = ____x8[____i15]; add(__l2, __x9); ____i15 = ____i15 + 1; } var __p = keys(args); __p._stash = __p._stash || true; add(__l2, __p); return __l2; } else { return args; } } }; _G.stash = stash; var unstash = (args) => { if (none63(args)) { return fresh(args); } else { var __l3 = last(args); if (obj63(__l3) && __l3._stash) { var __args1 = almost(args); var ____o9 = __l3; var __k14 = undefined; for (__k14 in ____o9) { var __v8 = ____o9[__k14]; var __e12; if (numeric63(__k14)) { __e12 = parseInt(__k14); } else { __e12 = __k14; } var __k15 = __e12; if (!( __k15 === "_stash")) { __args1[__k15] = __v8; } } return __args1; } else { return args; } } }; _G.unstash = unstash; var destash33 = (l, args1) => { if (obj63(l) && l._stash) { var ____o10 = l; var __k16 = undefined; for (__k16 in ____o10) { var __v9 = ____o10[__k16]; var __e13; if (numeric63(__k16)) { __e13 = parseInt(__k16); } else { __e13 = __k16; } var __k17 = __e13; if (!( __k17 === "_stash")) { args1[__k17] = __v9; } } } else { return l; } }; _G.destash33 = destash33; var search = (s, pattern, start) => { var __i18 = s.indexOf(pattern, start); if (__i18 >= 0) { return __i18; } }; _G.search = search; var split = (s, sep) => { if (s === "" || sep === "") { return []; } else { var __l4 = []; var __n16 = _35(sep); while (true) { var __i19 = search(s, sep); if (nil63(__i19)) { break; } else { add(__l4, clip(s, 0, __i19)); s = clip(s, __i19 + __n16); } } add(__l4, s); return __l4; } }; _G.split = split; var cat = (...xs) => { var __xs = unstash(xs); return either(reduce((a, b) => { return a + b; }, __xs), ""); }; _G.cat = cat; var _43 = (...xs) => { var __xs1 = unstash(xs); return either(reduce((a, b) => { return a + b; }, __xs1), 0); }; _G._43 = _43; var _45 = (...xs) => { var __xs2 = unstash(xs); return either(reduce((b, a) => { return a - b; }, reverse(__xs2)), 0); }; _G._45 = _45; var _42 = (...xs) => { var __xs3 = unstash(xs); return either(reduce((a, b) => { return a * b; }, __xs3), 1); }; _G._42 = _42; var _47 = (...xs) => { var __xs4 = unstash(xs); return either(reduce((b, a) => { return a / b; }, reverse(__xs4)), 1); }; _G._47 = _47; var _37 = (...xs) => { var __xs5 = unstash(xs); return either(reduce((b, a) => { return a % b; }, reverse(__xs5)), 0); }; _G._37 = _37; var pairwise = (f, xs) => { var __i20 = 0; while (__i20 < edge(xs)) { var __a = xs[__i20]; var __b = xs[__i20 + 1]; if (! f(__a, __b)) { return false; } __i20 = __i20 + 1; } return true; }; _G.pairwise = pairwise; var _60 = (...xs) => { var __xs6 = unstash(xs); return pairwise((a, b) => { return a < b; }, __xs6); }; _G._60 = _60; var _62 = (...xs) => { var __xs7 = unstash(xs); return pairwise((a, b) => { return a > b; }, __xs7); }; _G._62 = _62; var _61 = (...xs) => { var __xs8 = unstash(xs); return pairwise((a, b) => { return a === b; }, __xs8); }; _G._61 = _61; var _6061 = (...xs) => { var __xs9 = unstash(xs); return pairwise((a, b) => { return a <= b; }, __xs9); }; _G._6061 = _6061; var _6261 = (...xs) => { var __xs10 = unstash(xs); return pairwise((a, b) => { return a >= b; }, __xs10); }; _G._6261 = _6261; var number = (s) => { var __n17 = parseFloat(s); if (! isNaN(__n17)) { return __n17; } }; _G.number = number; var numberCode63 = (n) => { return n >= 48 && n <= 57; }; _G.numberCode63 = numberCode63; var numeric63 = (s) => { var __n18 = _35(s); var __i21 = 0; while (__i21 < __n18) { if (! numberCode63(code(s, __i21))) { return false; } __i21 = __i21 + 1; } return some63(s); }; _G.numeric63 = numeric63; var tostring = (x) => { return x.toString(); }; _G.tostring = tostring; var escape = (s) => { var __s1 = "\""; var __i22 = 0; while (__i22 < _35(s)) { var __c = char(s, __i22); var __e14; if (__c === "\n") { __e14 = "\\n"; } else { var __e15; if (__c === "\r") { __e15 = "\\r"; } else { var __e16; if (__c === "\"") { __e16 = "\\\""; } else { var __e17; if (__c === "\\") { __e17 = "\\\\"; } else { __e17 = __c; } __e16 = __e17; } __e15 = __e16; } __e14 = __e15; } var __c1 = __e14; __s1 = __s1 + __c1; __i22 = __i22 + 1; } return __s1 + "\""; }; _G.escape = escape; var simpleId63 = (x) => { var __id3 = string63(x); var __e18; if (__id3) { var ____id = (() => { try { return [true, readString(x)]; } catch (__e91) { return [false, __e91]; } })(); var __ok = ____id[0]; var __v10 = ____id[1]; __e18 = __ok && __v10 === x; } else { __e18 = __id3; } return __e18; }; _G.simpleId63 = simpleId63; var str = (x, stack) => { if (nil63(x)) { return "nil"; } else { if (nan63(x)) { return "nan"; } else { if (x === inf) { return "inf"; } else { if (x === _inf) { return "-inf"; } else { if (boolean63(x)) { if (x) { return "true"; } else { return "false"; } } else { if (stringLiteral63(x)) { return x; } else { if (simpleId63(x)) { return x; } else { if (string63(x)) { return escape(x); } else { if (atom63(x)) { return tostring(x); } else { if (function63(x)) { return "function"; } else { if (stack && in63(x, stack)) { return "circular"; } else { var __s = "("; var __sp = ""; var __xs11 = []; var __ks = []; var __l5 = stack || []; add(__l5, x); var ____o11 = x; var __k18 = undefined; for (__k18 in ____o11) { var __v11 = ____o11[__k18]; var __e19; if (numeric63(__k18)) { __e19 = parseInt(__k18); } else { __e19 = __k18; } var __k19 = __e19; if (number63(__k19)) { __xs11[__k19] = str(__v11, __l5); } else { add(__ks, str(__k19, __l5) + ":"); add(__ks, str(__v11, __l5)); } } drop(__l5); var ____o12 = join(__xs11, __ks); var ____i24 = undefined; for (____i24 in ____o12) { var __v12 = ____o12[____i24]; var __e20; if (numeric63(____i24)) { __e20 = parseInt(____i24); } else { __e20 = ____i24; } var ____i241 = __e20; __s = __s + __sp + __v12; __sp = " "; } return __s + ")"; } } } } } } } } } } } }; _G.str = str; var apply = (f, args) => { var __args = stash(args); return f.apply(f, __args); }; _G.apply = apply; var call = (f, ...__r81) => { var ____r81 = unstash(__r81); var __f = destash33(f, ____r81); var ____id1 = ____r81; var __args11 = cut(____id1, 0); return apply(__f, __args11); }; _G.call = call; var setenv = (k, ...__r82) => { var ____r82 = unstash(__r82); var __k20 = destash33(k, ____r82); var ____id2 = ____r82; var __keys = cut(____id2, 0); if (string63(__k20)) { var __e21; if (__keys.toplevel) { __e21 = hd(_G.environment); } else { __e21 = last(_G.environment); } var __frame = __e21; var __entry = __frame[__k20] || {}; var ____o13 = __keys; var __k21 = undefined; for (__k21 in ____o13) { var __v13 = ____o13[__k21]; var __e22; if (numeric63(__k21)) { __e22 = parseInt(__k21); } else { __e22 = __k21; } var __k22 = __e22; __entry[__k22] = __v13; } __frame[__k20] = __entry; return __frame[__k20]; } }; _G.setenv = setenv; var print = (x) => { return console.log(x); }; _G.print = print; abs = Math.abs; _G.abs = abs; acos = Math.acos; _G.acos = acos; asin = Math.asin; _G.asin = asin; atan = Math.atan; _G.atan = atan; atan2 = Math.atan2; _G.atan2 = atan2; ceil = Math.ceil; _G.ceil = ceil; cos = Math.cos; _G.cos = cos; floor = Math.floor; _G.floor = floor; log = Math.log; _G.log = log; log10 = Math.log10; _G.log10 = log10; max = Math.max; _G.max = max; min = Math.min; _G.min = min; pow = Math.pow; _G.pow = pow; random = Math.random; _G.random = random; sin = Math.sin; _G.sin = sin; sinh = Math.sinh; _G.sinh = sinh; sqrt = Math.sqrt; _G.sqrt = sqrt; tan = Math.tan; _G.tan = tan; tanh = Math.tanh; _G.tanh = tanh; trunc = Math.floor; _G.trunc = trunc; setenv("quote", {["_stash"]: true, ["macro"]: (form) => { return quoted(form); }}); setenv("quasiquote", {["_stash"]: true, ["macro"]: (form) => { return quasiexpand(form, 1); }}); setenv("set", {["_stash"]: true, ["macro"]: (...args) => { var __args2 = unstash(args); return join(["do"], map((__x10) => { var ____id4 = __x10; var __lh = ____id4[0]; var __rh = ____id4[1]; return ["%set", __lh, __rh]; }, pair(__args2))); }}); setenv("at", {["_stash"]: true, ["macro"]: (l, i) => { return [l, ["brackets", i]]; }}); setenv("wipe", {["_stash"]: true, ["macro"]: (place) => { return ["%delete", place]; }}); setenv("list", {["_stash"]: true, ["macro"]: (...body) => { var __body = unstash(body); if (keys63(__body)) { return join(["%object"], mapo((x) => { return x; }, __body)); } else { return join(["%array"], __body); } }}); setenv("if", {["_stash"]: true, ["macro"]: (...branches) => { var __branches = unstash(branches); return hd(expandIf(__branches)); }}); setenv("case", {["_stash"]: true, ["macro"]: (expr, ...__r90) => { var ____r90 = unstash(__r90); var __expr = destash33(expr, ____r90); var ____id5 = ____r90; var __clauses = cut(____id5, 0); var __x11 = unique("x"); var __eq = (_) => { if (_ === "else") { return true; } else { return ["=", _, __x11]; } }; var __cl = (__x12) => { var ____id6 = __x12; var __a1 = ____id6[0]; var __body1 = cut(____id6, 1); if (string63(__a1) || number63(__a1) || hd(__a1) === "quote") { return [__eq(__a1), join(["do"], __body1)]; } else { if (one63(__a1)) { return [__eq(hd(__a1)), join(["do"], __body1)]; } else { if (_35(__a1) > 1) { return [join(["or"], map(__eq, __a1)), join(["do"], __body1)]; } } } }; return ["let", __x11, __expr, join(["if"], apply(join, map(__cl, __clauses)))]; }}); setenv("when", {["_stash"]: true, ["macro"]: (cond, ...__r93) => { var ____r93 = unstash(__r93); var __cond = destash33(cond, ____r93); var ____id7 = ____r93; var __body2 = cut(____id7, 0); return ["if", __cond, join(["do"], __body2)]; }}); setenv("unless", {["_stash"]: true, ["macro"]: (cond, ...__r94) => { var ____r94 = unstash(__r94); var __cond1 = destash33(cond, ____r94); var ____id8 = ____r94; var __body3 = cut(____id8, 0); return ["if", ["not", __cond1], join(["do"], __body3)]; }}); setenv("obj", {["_stash"]: true, ["macro"]: (...body) => { var __body4 = unstash(body); return join(["%object"], mapo((x) => { return x; }, __body4)); }}); setenv("let", {["_stash"]: true, ["macro"]: (bs, ...__r96) => { var ____r96 = unstash(__r96); var __bs = destash33(bs, ____r96); var ____id9 = ____r96; var __body5 = cut(____id9, 0); if (atom63(__bs)) { return join(["let", [__bs, hd(__body5)]], tl(__body5)); } else { if (none63(__bs)) { return join(["do"], __body5); } else { var ____id10 = __bs; var __lh1 = ____id10[0]; var __rh1 = ____id10[1]; var __bs2 = cut(____id10, 2); var ____id11 = bind(__lh1, either(__rh1, "nil")); var __id12 = ____id11[0]; var __val = ____id11[1]; var __bs1 = cut(____id11, 2); var __renames = []; if (! idLiteral63(__id12)) { var __id111 = unique(__id12); __renames = [__id12, __id111]; __id12 = __id111; } return ["do", ["%local", __id12, __val], ["let-symbol", __renames, join(["let", join(__bs1, __bs2)], __body5)]]; } } }}); setenv("with", {["_stash"]: true, ["macro"]: (x, v, ...__r97) => { var ____r97 = unstash(__r97); var __x13 = destash33(x, ____r97); var __v14 = destash33(v, ____r97); var ____id13 = ____r97; var __body6 = cut(____id13, 0); return join(["let", [__x13, __v14]], __body6, [__x13]); }}); setenv("let-when", {["_stash"]: true, ["macro"]: (x, v, ...__r98) => { var ____r98 = unstash(__r98); var __x14 = destash33(x, ____r98); var __v15 = destash33(v, ____r98); var ____id14 = ____r98; var __body7 = cut(____id14, 0); var __y4 = unique("y"); return ["let", __y4, __v15, ["when", ["yes", __y4], join(["let", [__x14, __y4]], __body7)]]; }}); setenv("void", {["_stash"]: true, ["macro"]: (...body) => { var __body8 = unstash(body); return join(["do"], __body8, [["do"]]); }}); setenv("%setenv", {["_stash"]: true, ["macro"]: (name, ...__r99) => { var ____r99 = unstash(__r99); var __name = destash33(name, ____r99); var ____id15 = ____r99; var __keys1 = cut(____id15, 0); return ["void", join(["setenv", ["quote", __name]], __keys1)]; }}); setenv("define-macro", {["_stash"]: true, ["macro"]: (name, args, ...__r100) => { var ____r100 = unstash(__r100); var __name1 = destash33(name, ____r100); var __args3 = destash33(args, ____r100); var ____id16 = ____r100; var __body9 = cut(____id16, 0); return {[0]: "%setenv", [1]: __name1, ["macro"]: join(["fn", __args3], __body9)}; }}); setenv("define-special", {["_stash"]: true, ["macro"]: (name, args, ...__r101) => { var ____r101 = unstash(__r101); var __name2 = destash33(name, ____r101); var __args4 = destash33(args, ____r101); var ____id17 = ____r101; var __body10 = cut(____id17, 0); return join({[0]: "%setenv", [1]: __name2, ["special"]: join(["fn", __args4], __body10)}, keys(__body10)); }}); setenv("define-symbol-macro", {["_stash"]: true, ["macro"]: (name, expansion) => { return {[0]: "%setenv", [1]: name, ["symbol"]: ["quote", expansion]}; }}); setenv("define-reader", {["_stash"]: true, ["macro"]: (__x15, ...__r103) => { var ____id18 = __x15; var __char = ____id18[0]; var __s11 = ____id18[1]; var ____r103 = unstash(__r103); var ____x15 = destash33(__x15, ____r103); var ____id19 = ____r103; var __body11 = cut(____id19, 0); return ["set", ["read-table", ["brackets", __char]], join(["fn", [__s11]], __body11)]; }}); setenv("define", {["_stash"]: true, ["macro"]: (name, x, ...__r104) => { var ____r104 = unstash(__r104); var __name3 = destash33(name, ____r104); var __x16 = destash33(x, ____r104); var ____id20 = ____r104; var __body12 = cut(____id20, 0); setenv(__name3, {["_stash"]: true, ["variable"]: true}); if (some63(__body12)) { return join(["%local-function", __name3], bind42(__x16, __body12)); } else { return ["%local", __name3, __x16]; } }}); setenv("define-global", {["_stash"]: true, ["macro"]: (name, x, ...__r105) => { var ____r105 = unstash(__r105); var __name4 = destash33(name, ____r105); var __x17 = destash33(x, ____r105); var ____id21 = ____r105; var __body13 = cut(____id21, 0); setenv(__name4, {["_stash"]: true, ["toplevel"]: true, ["variable"]: true}); if (some63(__body13)) { return ["do", join(["%global-function", __name4], bind42(__x17, __body13)), ["%set", ["_G", "." + __name4], __name4]]; } else { return ["do", ["%set", __name4, __x17], ["%set", ["_G", "." + __name4], __name4]]; } }}); setenv("with-frame", {["_stash"]: true, ["macro"]: (...body) => { var __body14 = unstash(body); var __x18 = unique("x"); return ["do", ["add", ["_G", ".environment"], ["obj"]], ["with", __x18, join(["do"], __body14), ["drop", ["_G", ".environment"]]]]; }}); setenv("with-bindings", {["_stash"]: true, ["macro"]: (__x19, ...__r106) => { var ____id22 = __x19; var __names = ____id22[0]; var ____r106 = unstash(__r106); var ____x19 = destash33(__x19, ____r106); var ____id23 = ____r106; var __body15 = cut(____id23, 0); var __x20 = unique("x"); return join(["with-frame", ["each", __x20, __names, ["if", ["default-assignment?", __x20], {[0]: "setenv", [1]: ["at", __x20, 1], ["variable"]: true}, {[0]: "setenv", [1]: __x20, ["variable"]: true}]]], __body15); }}); setenv("let-macro", {["_stash"]: true, ["macro"]: (definitions, ...__r107) => { var ____r107 = unstash(__r107); var __definitions = destash33(definitions, ____r107); var ____id24 = ____r107; var __body16 = cut(____id24, 0); add(_G.environment, {}); map((m) => { return _eval(join(["define-macro"], m)); }, __definitions); var ____x21 = join(["do"], macroexpand(__body16)); drop(_G.environment); return ____x21; }}); setenv("let-symbol", {["_stash"]: true, ["macro"]: (expansions, ...__r109) => { var ____r109 = unstash(__r109); var __expansions = destash33(expansions, ____r109); var ____id25 = ____r109; var __body17 = cut(____id25, 0); add(_G.environment, {}); map((__x23) => { var ____id26 = __x23; var __name5 = ____id26[0]; var __exp = ____id26[1]; return _eval(["define-symbol-macro", __name5, __exp]); }, pair(__expansions)); var ____x22 = join(["do"], macroexpand(__body17)); drop(_G.environment); return ____x22; }}); setenv("let-unique", {["_stash"]: true, ["macro"]: (names, ...__r111) => { var ____r111 = unstash(__r111); var __names1 = destash33(names, ____r111); var ____id27 = ____r111; var __body18 = cut(____id27, 0); var __bs11 = map((n) => { return [n, ["unique", ["quote", n]]]; }, __names1); return join(["let", apply(join, __bs11)], __body18); }}); setenv("fn", {["_stash"]: true, ["macro"]: (args, ...__r113) => { var ____r113 = unstash(__r113); var __args5 = destash33(args, ____r113); var ____id28 = ____r113; var __body19 = cut(____id28, 0); return join(["%function"], bind42(__args5, __body19)); }}); setenv("apply", {["_stash"]: true, ["macro"]: (f, ...__r114) => { var ____r114 = unstash(__r114); var __f1 = destash33(f, ____r114); var ____id29 = ____r114; var __args6 = cut(____id29, 0); if (_35(__args6) > 1) { return ["%call", "apply", __f1, ["join", join(["list"], almost(__args6)), last(__args6)]]; } else { return join(["%call", "apply", __f1], __args6); } }}); setenv("guard", {["_stash"]: true, ["macro"]: (expr) => { return [["fn", join(), ["%try", ["list", true, expr]]]]; }}); setenv("each", {["_stash"]: true, ["macro"]: (x, t, ...__r116) => { var ____r116 = unstash(__r116); var __x24 = destash33(x, ____r116); var __t2 = destash33(t, ____r116); var ____id30 = ____r116; var __body20 = cut(____id30, 0); var __o14 = unique("o"); var __n22 = unique("n"); var __i26 = unique("i"); var __e24; if (atom63(__x24)) { __e24 = [__i26, __x24]; } else { var __e25; if (_35(__x24) > 1) { __e25 = __x24; } else { __e25 = [__i26, hd(__x24)]; } __e24 = __e25; } var ____id31 = __e24; var __k23 = ____id31[0]; var __v16 = ____id31[1]; return ["let", [__o14, __t2, __k23, "nil"], ["%for", __o14, __k23, ["let", [__v16, [__o14, ["brackets", __k23]]], join(["let", __k23, ["if", ["numeric?", __k23], ["parseInt", __k23], __k23]], __body20)]]]; }}); setenv("for", {["_stash"]: true, ["macro"]: (i, to, ...__r117) => { var ____r117 = unstash(__r117); var __i27 = destash33(i, ____r117); var __to = destash33(to, ____r117); var ____id32 = ____r117; var __body21 = cut(____id32, 0); return ["let", __i27, 0, join(["while", ["<", __i27, __to]], __body21, [["inc", __i27]])]; }}); setenv("step", {["_stash"]: true, ["macro"]: (v, t, ...__r118) => { var ____r118 = unstash(__r118); var __v17 = destash33(v, ____r118); var __t3 = destash33(t, ____r118); var ____id33 = ____r118; var __body22 = cut(____id33, 0); var __x25 = unique("x"); var __i28 = unique("i"); return ["let", [__x25, __t3], ["for", __i28, ["#", __x25], join(["let", [__v17, ["at", __x25, __i28]]], __body22)]]; }}); setenv("set-of", {["_stash"]: true, ["macro"]: (...xs) => { var __xs12 = unstash(xs); var __l6 = []; var ____o15 = __xs12; var ____i29 = undefined; for (____i29 in ____o15) { var __x26 = ____o15[____i29]; var __e26; if (numeric63(____i29)) { __e26 = parseInt(____i29); } else { __e26 = ____i29; } var ____i291 = __e26; __l6[__x26] = true; } return join(["obj"], __l6); }}); setenv("join!", {["_stash"]: true, ["macro"]: (a, ...__r119) => { var ____r119 = unstash(__r119); var __a2 = destash33(a, ____r119); var ____id34 = ____r119; var __bs21 = cut(____id34, 0); return ["set", __a2, join(["join", __a2], __bs21)]; }}); setenv("cat!", {["_stash"]: true, ["macro"]: (a, ...__r120) => { var ____r120 = unstash(__r120); var __a3 = destash33(a, ____r120); var ____id35 = ____r120; var __bs3 = cut(____id35, 0); return ["set", __a3, join(["cat", __a3], __bs3)]; }}); setenv("inc", {["_stash"]: true, ["macro"]: (n, by) => { var __e27; if (nil63(by)) { __e27 = 1; } else { __e27 = by; } return ["set", n, ["+", n, __e27]]; }}); setenv("dec", {["_stash"]: true, ["macro"]: (n, by) => { var __e28; if (nil63(by)) { __e28 = 1; } else { __e28 = by; } return ["set", n, ["-", n, __e28]]; }}); setenv("with-indent", {["_stash"]: true, ["macro"]: (form) => { var __x27 = unique("x"); return ["do", ["inc", "indent-level"], ["with", __x27, form, ["dec", "indent-level"]]]; }}); setenv("export", {["_stash"]: true, ["macro"]: (...names) => { var __names2 = unstash(names); return join(["do"], map((k) => { return ["set", ["exports", "." + k], k]; }, __names2)); }}); setenv("when-compiling", {["_stash"]: true, ["macro"]: (...body) => { var __body23 = unstash(body); return _eval(join(["do"], __body23)); }}); setenv("during-compilation", {["_stash"]: true, ["macro"]: (...body) => { var __body24 = unstash(body); var __x28 = expand(join(["do"], __body24)); _eval(__x28); return __x28; }}); setenv("class", {["_stash"]: true, ["macro"]: (x, ...__r125) => { var ____r125 = unstash(__r125); var __x29 = destash33(x, ____r125); var ____id36 = ____r125; var __body25 = cut(____id36, 0); if (atom63(__x29)) { return join(["%class", [__x29]], __body25); } else { return join(["%class", __x29], __body25); } }}); setenv(".", {["_stash"]: true, ["macro"]: (...args) => { var __args7 = unstash(args); if (none63(__args7)) { return ["this", ".constructor"]; } else { if (one63(__args7)) { return join([".", "this", hd(__args7)], tl(__args7)); } else { var ____id37 = __args7; var __name6 = ____id37[0]; var __a4 = ____id37[1]; var __bs4 = cut(____id37, 2); var __e29; if (atom63(__a4)) { __e29 = ["quote", compile(__a4)]; } else { var __e30; if ("quote" === hd(__a4)) { __e30 = ["quote", compile(__a4[1])]; } else { __e30 = __a4; } __e29 = __e30; } var __prop = __e29; var __expr1 = [__name6, ["brackets", __prop]]; if (! atom63(__a4) && "quote" === hd(__a4) || stringLiteral63(__a4) || none63(__bs4)) { return __expr1; } else { return join([__expr1], __bs4); } } } }}); setenv("try", {["_stash"]: true, ["macro"]: (...body) => { var __body26 = unstash(body); var __e23 = unique("e"); return join(["%condition-case", __e23, join(["do"], map((x) => { if (!( obj63(x) && in63(hd(x), ["catch", "finally"]))) { return x; } }, __body26))], map((x) => { if (obj63(x)) { if (hd(x) === "finally") { return x; } else { if (hd(x) === "catch") { var ____id38 = x; var ___ = ____id38[0]; var __type = ____id38[1]; var ___var = ____id38[2]; var __body27 = cut(____id38, 3); return ["catch", __type, join(["let", [___var, __e23]], __body27)]; } } } }, __body26)); }}); setenv("throw", {["_stash"]: true, ["macro"]: (x) => { return ["%throw", x]; }}); setenv("brackets", {["_stash"]: true, ["macro"]: (...args) => { var __args8 = unstash(args); return join(["%brackets"], __args8); }}); setenv("braces", {["_stash"]: true, ["macro"]: (...args) => { var __args9 = unstash(args); return join(["%braces"], __args9); }}); var __exports = {}; var __self = __exports; var __module = {["exports"]: __exports}; var getenv = (k, p) => { if (string63(k)) { var __i30 = edge(_G.environment); while (__i30 >= 0) { var __b1 = _G.environment[__i30][k]; if (is63(__b1)) { var __e40; if (p) { __e40 = __b1[p]; } else { __e40 = __b1; } return __e40; } else { __i30 = __i30 - 1; } } } }; _G.getenv = getenv; var macroFunction = (k) => { return getenv(k, "macro"); }; var macro63 = (k) => { return is63(macroFunction(k)); }; var special63 = (k) => { return is63(getenv(k, "special")); }; var specialForm63 = (form) => { return ! atom63(form) && special63(hd(form)); }; var statement63 = (k) => { return special63(k) && getenv(k, "stmt"); }; var symbolExpansion = (k) => { return getenv(k, "symbol"); }; var symbolMacro63 = (k) => { return is63(symbolExpansion(k)); }; var variable63 = (k) => { return is63(getenv(k, "variable")); }; var bound63 = (x) => { return macro63(x) || special63(x) || symbolMacro63(x) || variable63(x); }; _G.bound63 = bound63; var quoted = (form) => { if (string63(form)) { return escape(form); } else { if (atom63(form)) { return form; } else { if (keys63(form)) { return join(["%object"], mapo(quoted, form)); } else { return join(["%array"], map(quoted, form)); } } } }; _G.quoted = quoted; var literal = (s) => { if (stringLiteral63(s)) { return s; } else { return quoted(s); } }; var stash42 = (args) => { if (keys63(args)) { var __l7 = ["%object", "\"_stash\"", true]; var ____o16 = args; var __k24 = undefined; for (__k24 in ____o16) { var __v18 = ____o16[__k24]; var __e41; if (numeric63(__k24)) { __e41 = parseInt(__k24); } else { __e41 = __k24; } var __k25 = __e41; if (! number63(__k25)) { add(__l7, literal(__k25)); add(__l7, __v18); } } return join(args, [__l7]); } else { return args; } }; var bias = (k) => { return k; }; var defaultAssignmentOp = "o"; var defaultAssignment63 = (x) => { return ! atom63(x) && hd(x) === defaultAssignmentOp; }; _G.defaultAssignment63 = defaultAssignment63; var bind = (lh, rh) => { if (atom63(lh)) { return [lh, rh]; } else { if (defaultAssignment63(lh)) { return bind(lh[1], ["if", ["is?", rh], rh, lh[2]]); } else { var __id39 = unique("id"); var __bs5 = [__id39, rh]; var ____o17 = lh; var __k26 = undefined; for (__k26 in ____o17) { var __v19 = ____o17[__k26]; var __e42; if (numeric63(__k26)) { __e42 = parseInt(__k26); } else { __e42 = __k26; } var __k27 = __e42; var __e43; if (__k27 === "rest") { __e43 = ["cut", __id39, _35(lh)]; } else { __e43 = [__id39, ["brackets", ["quote", __k27]]]; } var __x30 = __e43; if (is63(__k27)) { var __e44; if (__v19 === true) { __e44 = __k27; } else { __e44 = __v19; } var __k28 = __e44; __bs5 = join(__bs5, bind(__k28, __x30)); } } return __bs5; } } }; _G.bind = bind; var bind42 = (args, body) => { var __args12 = []; var rest = (r) => { __args12.rest = r; return ["unstash", r]; }; if (atom63(args)) { return [__args12, join(["let", [args, rest(args)]], body)]; } else { var __bs6 = []; var __r147 = unique("r"); var ____o18 = args; var __k29 = undefined; for (__k29 in ____o18) { var __v20 = ____o18[__k29]; var __e45; if (numeric63(__k29)) { __e45 = parseInt(__k29); } else { __e45 = __k29; } var __k30 = __e45; if (number63(__k30)) { if (atom63(__v20)) { add(__args12, __v20); } else { var __x31 = unique("x"); add(__args12, __x31); __bs6 = join(__bs6, [__v20, __x31]); } } } if (keys63(args)) { __bs6 = join(__bs6, [__r147, rest(__r147)]); var __n27 = _35(__args12); var __i34 = 0; while (__i34 < __n27) { var __v21 = __args12[__i34]; __bs6 = join(__bs6, [__v21, ["destash!", __v21, __r147]]); __i34 = __i34 + 1; } __bs6 = join(__bs6, [keys(args), __r147]); } return [__args12, join(["let", __bs6], body)]; } }; _G.bind42 = bind42; var quoting63 = (depth) => { return number63(depth); }; var quasiquoting63 = (depth) => { return quoting63(depth) && depth > 0; }; var canUnquote63 = (depth) => { return quoting63(depth) && depth === 1; }; var quasisplice63 = (x, depth) => { return canUnquote63(depth) && ! atom63(x) && hd(x) === "unquote-splicing"; }; var expandLocal = (__x32) => { var ____id40 = __x32; var __x33 = ____id40[0]; var __name7 = ____id40[1]; var __value = ____id40[2]; setenv(__name7, {["_stash"]: true, ["variable"]: true}); return ["%local", __name7, macroexpand(__value)]; }; var expandFunction = (__x34) => { var ____id41 = __x34; var __x35 = ____id41[0]; var __args10 = ____id41[1]; var __body28 = cut(____id41, 2); add(_G.environment, {}); var ____o19 = __args10; var ____i35 = undefined; for (____i35 in ____o19) { var ____x36 = ____o19[____i35]; var __e46; if (numeric63(____i35)) { __e46 = parseInt(____i35); } else { __e46 = ____i35; } var ____i351 = __e46; if (defaultAssignment63(____x36)) { setenv(____x36[1], {["_stash"]: true, ["variable"]: true}); } else { setenv(____x36, {["_stash"]: true, ["variable"]: true}); } } var ____x37 = join(["%function", __args10], macroexpand(__body28)); drop(_G.environment); return ____x37; }; var expandTable = (__x38) => { var ____id42 = __x38; var __x39 = ____id42[0]; var __args111 = cut(____id42, 1); var __expr2 = join([__x39], keys(__args111)); var ____x40 = __args111; var ____i36 = 0; while (____i36 < _35(____x40)) { var __x41 = ____x40[____i36]; if (atom63(__x41)) { add(__expr2, [__x41, macroexpand(__x41)]); } else { if (_35(__x41) <= 2) { var ____id43 = __x41; var __name8 = ____id43[0]; var __v22 = ____id43[1]; add(__expr2, [macroexpand(__name8), macroexpand(__v22)]); } else { var ____id44 = __x41; var __prefix = ____id44[0]; var __name9 = ____id44[1]; var __args121 = ____id44[2]; var __body29 = cut(____id44, 3); if (some63(__body29)) { add(_G.environment, {}); var ____o20 = __args121; var ____i37 = undefined; for (____i37 in ____o20) { var ____x42 = ____o20[____i37]; var __e47; if (numeric63(____i37)) { __e47 = parseInt(____i37); } else { __e47 = ____i37; } var ____i371 = __e47; if (defaultAssignment63(____x42)) { setenv(____x42[1], {["_stash"]: true, ["variable"]: true}); } else { setenv(____x42, {["_stash"]: true, ["variable"]: true}); } } var ____x43 = add(__expr2, join([__prefix, macroexpand(__name9), __args121], macroexpand(__body29))); drop(_G.environment); ____x43; } else { add(__expr2, [__prefix, macroexpand(__name9), macroexpand(__args121)]); } } } ____i36 = ____i36 + 1; } return __expr2; }; var expandClass = (__x44) => { var ____id45 = __x44; var __x45 = ____id45[0]; var __name10 = ____id45[1]; var __body30 = cut(____id45, 2); return join([__x45, __name10], tl(expandTable(join(["%table"], __body30)))); }; var expandConditionCase = (__x46) => { var ____id46 = __x46; var __x47 = ____id46[0]; var ___var1 = ____id46[1]; var __form = ____id46[2]; var __clauses1 = cut(____id46, 3); return join(["%condition-case", ___var1, macroexpand(__form)], map((__x48) => { var ____id47 = __x48; var __which = ____id47[0]; var __body31 = cut(____id47, 1); if (__which === "finally") { return join([__which], map(macroexpand, __body31)); } else { add(_G.environment, {}); var ____o21 = [___var1]; var ____i38 = undefined; for (____i38 in ____o21) { var ____x49 = ____o21[____i38]; var __e48; if (numeric63(____i38)) { __e48 = parseInt(____i38); } else { __e48 = ____i38; } var ____i381 = __e48; if (defaultAssignment63(____x49)) { setenv(____x49[1], {["_stash"]: true, ["variable"]: true}); } else { setenv(____x49, {["_stash"]: true, ["variable"]: true}); } } var ____x50 = join([__which], map(macroexpand, __body31)); drop(_G.environment); return ____x50; } }, __clauses1)); }; _G.expandConditionCase = expandConditionCase; var expandDefinition = (__x51) => { var ____id48 = __x51; var __x52 = ____id48[0]; var __name11 = ____id48[1]; var __args13 = ____id48[2]; var __body32 = cut(____id48, 3); add(_G.environment, {}); var ____o22 = __args13; var ____i39 = undefined; for (____i39 in ____o22) { var ____x53 = ____o22[____i39]; var __e49; if (numeric63(____i39)) { __e49 = parseInt(____i39); } else { __e49 = ____i39; } var ____i391 = __e49; if (defaultAssignment63(____x53)) { setenv(____x53[1], {["_stash"]: true, ["variable"]: true}); } else { setenv(____x53, {["_stash"]: true, ["variable"]: true}); } } var ____x54 = join([__x52, __name11, __args13], macroexpand(__body32)); drop(_G.environment); return ____x54; }; var expandMacro = (form) => { return macroexpand(expand1(form)); }; var expand1 = (__x55) => { var ____id49 = __x55; var __name12 = ____id49[0]; var __body33 = cut(____id49, 1); return apply(macroFunction(__name12), __body33); }; _G.expand1 = expand1; var macroexpand = (form) => { if (symbolMacro63(form)) { return macroexpand(symbolExpansion(form)); } else { if (atom63(form)) { return form; } else { var __x56 = hd(form); if (__x56 === "%local") { return expandLocal(form); } else { if (__x56 === "%function") { return expandFunction(form); } else { if (__x56 === "%table") { return expandTable(form); } else { if (__x56 === "%class") { return expandClass(form); } else { if (__x56 === "%condition-case") { return expandConditionCase(form); } else { if (__x56 === "%global-function") { return expandDefinition(form); } else { if (__x56 === "%local-function") { return expandDefinition(form); } else { if (macro63(__x56)) { return expandMacro(form); } else { return map(macroexpand, form); } } }