Exemple #1
0
 def test_let_creates_a_new_escope(self):
     e = env()
     assert run(
         '''(begin
         (define x 1)
         (let ((x 2) (y 40)) (+ x y))
     )''', e) == 42
     assert e[x] == 1
Exemple #2
0
 def test_lambda_defines_an_independent_scope(self):
     e = env()
     fn = run(
         '''(begin
         (define x 10)
         (lambda (x y) (+ x y))
     )''', e)
     assert callable(fn)
     assert fn(1, 2) == 3
     assert fn(40, 2) == 42
     assert e[x] == 10
Exemple #3
0
 def test_collatz_example(self, example):
     e = env()
     run(example('collatz.lispy'), e)
     assert e[var.collatz](10) == [10, 5, 16, 8, 4, 2, 1]
Exemple #4
0
 def test_factorial_example(self, example):
     e = env()
     run(example('fat.lispy'), e)
     assert e[var.fat](5) == 120
     assert e[var.fat](10) == 3628800
Exemple #5
0
 def test_lisp_fibo_example(self, example):
     e = env()
     run(example('lisp-fibo.lispy'), e)
     assert e[var.fibo](5) == [1, 1, 2, 3, 5]
     assert e[var.fibo](10) == [1, 1, 2, 3, 5, 8, 13, 21, 34, 55]
Exemple #6
0
 def test_defn(self):
     e = env()
     assert run(':defn incr x: (+ x 1)', e) is None
     assert e[Symbol('incr')](41) == 42
Exemple #7
0
 def test_eval_define_nested(self):
     e = env()
     assert run("(define x (+ 40 2))", e) is None
     assert e[Symbol('x')] == 42
Exemple #8
0
 def test_eval_define_simple(self):
     e = env()
     assert run("(define x 42)", e) is None
     assert e[Symbol('x')] == 42
Exemple #9
0
 def test_env_creation(self):
     assert env() == global_env
     assert set(env({var.x: 42})).issuperset(set(global_env))
     assert env({var.x: 42})[var.x] == 42
     assert env(x=42)[var.x] == 42