示例#1
0
文件: testeval.py 项目: charyorde/dao
 def testloop(self):
   eq_(eval(let([(i,3)], 
                block(a, set(i, sub(i, 1)), 
                           if_(eq(i, 0), exit_block(a, 1)),
                           continue_block(a)), i)), 0)
示例#2
0
文件: testeval.py 项目: charyorde/dao
 def test_unwind_protect_loop(self):
   eq_(eval(let([(i,3)], 
                block(a, set(i, sub(i, 1)), 
                           if_(eq(i, 0), exit_block(a, 1)),
                           unwind_protect(continue_block(a), prin(2))), i)), 0)
示例#3
0
文件: testeval.py 项目: charyorde/dao
 def testif_add_sub(self):
   eq_(eval(if_(0, add, sub)(1, 1)), 0)
   eq_(eval(if_(1, add, sub)(1, 1)), 2)
示例#4
0
文件: testeval.py 项目: charyorde/dao
 def testif_(self):
   eq_(eval(if_(0, 1, 2)), 2)
示例#5
0
文件: testeval.py 项目: charyorde/dao
 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)
示例#6
0
文件: testeval.py 项目: charyorde/dao
 def testletrfac(self):
   eq_(eval(letr([(fac, lambda_([n], if_(eq(n,1), 1, mul(n, fac(sub(n, 1))))))],
                 fac(3))), 6)
示例#7
0
文件: testeval.py 项目: charyorde/dao
 def testletr(self):
   eq_(eval(letr([(f, lambda_([n], if_(eq(n, 1), 1, f(sub(n, 1)))))],
                 f(2))), 1)