def testblock(self): f = Var('f') eq_(eval(block('foo', let([(f, lambda_((), exit_block('foo',1)))], mul(2,block('foo', f()))))), 1)
def testArithmetic(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 testletrfac(self): eq_(eval(letr([(fac, lambda_([n], if_(eq(n,1), 1, mul(n, fac(sub(n, 1))))))], fac(3))), 6)