Esempio n. 1
0
 def test_define_recursive(self):
   eq_(eval(begin(define(f, function(((2,), 2), ((x,), f(x-1)))), f(4))), 2)
Esempio n. 2
0
 def test_let_in_module(self):
   a, m1, m2 = Var('a'), Var('m1'), Var('m2')
   eq_(eval(let([(m1,module(define(a,1), let([(a,2)], define(a,3))))], 
              from_(m1,a))), 1) 
Esempio n. 3
0
 def testdefine(self):
   eq_(eval(begin(define(x,1),define(x,2))), 2)
Esempio n. 4
0
 def test_embeded_module(self):
   a, m1, m2 = Var('a'), Var('m1'), Var('m2')
   eq_(eval(let([(m1,module(define(a,1),define(m2, module(define(a,2)))))], 
              from_(from_(m1,m2),a))), 2) 
Esempio n. 5
0
 def testfrom(self):
   a, m = Var('a'), Var('m')
   eq_(eval(let([(m,module(define(a,1)))], from_(m,a))), 1)
Esempio n. 6
0
 def testbindings(self):
   a = Var('a')
   m1 = eval(module(define(a,1)))
   ok_(a in m1.bindings)    
Esempio n. 7
0
 def test_define_recursive(self):
     eq_(
         eval(
             begin(define(f, function(((2, ), 2), ((x, ), f(x - 1)))),
                   f(4))), 2)
Esempio n. 8
0
(sexpression1, sexpression, bracket_expression, punct_expression, sexpression_list, 
 atom, maybe_spaces, eval_parse_result) = vars(
   'sexpression1, sexpression, bracket_expression, punct_expression, sexpression_list, '
 'atom, maybe_spaces, eval_parse_result')

_ = DummyVar('_')

def from_sexp(var):
  return from_(sexpression_module, var)

defines = in_module(sexpression_module, 
  
  define(atom, function(
    ([x], integer(x)),
    ([x], dqstring(x)),
    ([x], symbol(x))
    )),
  
  define(bracket_expression, function(
    ([exp_list], and_p(char('('), spaces0(_), from_sexp(sexpression_list)(exp_list), spaces0(_), char(')'))),
    ([exp_list], and_p(char('['), spaces0(_), from_sexp(sexpression_list)(exp_list), spaces0(_), char(']'))))),
  
  define(punct_expression, function(
    ([L(quote, exp)], and_p(char("'"), from_sexp(sexpression)(exp))),
    ([L(quasiquote, exp)], and_p(char("`"), from_sexp(sexpression)(exp))),
    ([L(unquote_splice, exp)], and_p(literal(",@"), from_sexp(sexpression)(exp))),
    ([L(unquote, exp)], and_p(char(","), from_sexp(sexpression)(exp))))),
  
  define(sexpression_list, function(
    ([Cons(exp, exp_list)], and_p(from_sexp(sexpression)(exp), from_sexp(maybe_spaces)(), from_sexp(sexpression_list)(exp_list))),