dax
Version:
A Lisp for JavaScript
1,827 lines (1,826 loc) • 111 kB
JavaScript
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);
}
}
}