symbol("(");
symbol("\\").handler = lambda_handler;
symbol("lambda").handler = lambda_handler;
+ symbol("\u03bb").handler = lambda_handler;
+ // symbol("\u2203").handler = exists_handler;
+ // symbol("\u2200").handler = forall_handler;
symbol(".");
function make_constants() {
constant("I", make_lam(x, xx));
constant("B", make_lam3(u, v, x, make_app(uu, make_app(vv, xx))));
constant("C", make_lam3(u, v, x, make_app3(uu, xx, vv)));
- constant("W", make_lam2(u, v, make_app3(uu, vv, vv)));
+
+ // trush \uv.vu = CI = box
constant("T", make_lam2(u, v, make_app(vv, uu)));
+ // vireo \uvw.wuv = pair
+ constant("V", make_lam3(u, v, x, make_app3(xx, uu, vv)));
+ // warbler \uv.uvv = C(BM(BBT) = C(BS(C(BBI)I))I
+ constant("W", make_lam2(u, v, make_app3(uu, vv, vv)));
+ // mockingbird \u.uu = SII = omega
+ constant("M", make_lam(u, make_app(uu, uu)));
+ // lark \uv.u(vv) = CBM = BWB
+ constant("L", make_lam2(u, v, make_app(uu, make_app(vv, vv))));
+ // Y is SLL
}
make_constants();
} else {
t.first = [];
while (token.arity === "name" || token.id === "\\") {
- if (token.id !== "\\") {t.first.push(n);}
- n = token;
+ if (token.id !== "\\") {
+ t.first.push(n);
+ n = token;
+ }
advance();
}
if (token.arity === "literal" && t.first.length === 0) {
tokens = source.tokens();
token_nr = 0;
advance();
-
+
// let n = c in b
// (\n. b) c
target = t;
advance("in");
}
-
+
target.second = expression(false);
advance("(end)");