Exemplo n.º 1
0
 def testLambda(self):
   eq_(eval(lambda_([x], 1)(2)), 1)
   eq_(eval(lambda_([x], x)(2)), 2)
   eq_(eval(lambda_((x, y), add(x, y))(1, 3)), 4)
Exemplo n.º 2
0
 def testletdouble(self):
   f = Var('f')
   eq_(eval(let([(f, lambda_([x], add(x, x)))], f(1))), 2)
Exemplo n.º 3
0
 def testcallcc(self):
   from dao.solve import done
   eq_(eval(callcc(lambda_([k], k(2)))), 2)
Exemplo n.º 4
0
 def testblock(self):
   f = Var('f')
   eq_(eval(block('foo', let([(f, lambda_((), exit_block('foo',1)))], 
                           mul(2,block('foo', f()))))), 
       1)
Exemplo n.º 5
0
 def testletroddeven(self):
   eq_(eval(letr([(odd, lambda_([n], if_(eq(n,0), 0, even(sub(n,1))))),
                   (even, lambda_([n], if_(eq(n,0), 1, odd(sub(n, 1)))))],
                 odd(3))), 1)
Exemplo n.º 6
0
 def testletrfac(self):
   eq_(eval(letr([(fac, lambda_([n], if_(eq(n,1), 1, mul(n, fac(sub(n, 1))))))],
                 fac(3))), 6)
Exemplo n.º 7
0
 def testletr(self):
   eq_(eval(letr([(f, lambda_([n], if_(eq(n, 1), 1, f(sub(n, 1)))))],
                 f(2))), 1)