[package] [Java implementation] [Execution output]


ExprTest


import Primitive;
import Expr;

test(input) = {
    output << input << " = " << eval(input) << "\n";
}

void: main(String[]: args) = {
    zero = lambda("f", lambda("x", var("x")));
    one  = lambda("x", var("x"));
    two  = lambda("f", lambda("x", app(var("f"), app(var("f"), var("x")))));

    i_0 = const(integer(0));
    i_succ = const(proc(arg −> {integer(i) −> integer(i + 1)}.get(arg)));

    test(app(app(app(two, two), i_succ), i_0));
    test(app(app(app(two, app(two, two)), i_succ), i_0));
    test(app(app(app(app(app(two, two), two), two), i_succ), i_0));
}