blob: 3e32d2c0adc06c677a885d6b915aecb45802c704 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
import actinide
def test_known_expansion():
s = actinide.Session()
s.run('''
(begin
(define-macro (let-one binding body)
(begin
(define name (head binding))
(define val (head (tail binding)))
`((lambda (,name) ,body) ,val))))
''')
program = s.read('(let-one (x 1) x)')
assert s.symbol('x') not in s.environment
assert (1,) == s.eval(program)
def test_quasiquote_expansion():
s = actinide.Session()
program = s.read('`(a ,b c)`')
expansion = s.expand(program)
assert s.read("(cons 'a (cons b (cons 'c ())))") == expansion
def test_nested_qq_expansion():
s = actinide.Session()
program = s.read('`((,a))`')
expansion = s.expand(program)
assert s.read("(cons (cons a ()) ())") == expansion
def test_shorter_qq_expansion():
s = actinide.Session()
program = s.read('`(,a b)`')
expansion = s.expand(program)
assert s.read("(cons a (cons 'b ()))") == expansion
|