def test_letrec_fac(self): from util import m, n, fac eq_( eval( letrec([ (fac, lamda([n], if_(eq(n, 1), 1, mul(n, fac(sub(n, 1)))))) ], fac(3))), 6)
def test_letrec_fac(self): from util import m, n fac = MacroVar('fac') eq_( eval( letrec([ (fac, macro([n], if_(eq(n, 1), 1, mul(n, fac(sub(n, 1)))))) ], fac(3))), 6)
def testblock(self): f = Var('f') foo = Var('foo') eq_( eval( block( foo, let([(f, lamda((), exit_block(foo, 1)))], mul(2, block(foo, f()))))), 1)
def test_arithmetic(self): eq_(eval(add(1, 2)), 3) eq_(eval(sub(1, 1)), 0) eq_(eval(mul(2, 2)), 4) eq_(eval(div(2, 2)), 1)
def testblock(self): f = Var('f') foo = Var('foo') eq_(eval(block(foo, let([(f, lamda((), exit_block(foo,1)))], mul(2, block(foo, f()))))), 1)
def test_letrec_fac(self): from util import m, n fac = MacroVar('fac') eq_(eval(letrec([(fac, macro([n], if_(eq(n,1), 1, mul(n, fac(sub(n, 1))))))], fac(3))), 6)
def test_letrec_fac(self): from util import m, n, fac eq_(eval(letrec([(fac, lamda([n], if_(eq(n,1), 1, mul(n, fac(sub(n, 1))))))], fac(3))), 6)