Basic: pass required tests. Printer fix.
[jackhill/mal.git] / tests / step3_env.mal
CommitLineData
31690700
JM
1;; Testing REPL_ENV
2(+ 1 2)
3;=>3
4(/ (- (+ 5 (* 2 3)) 3) 4)
5;=>2
6
7
8;; Testing def!
9(def! x 3)
10;=>3
11x
12;=>3
13(def! x 4)
14;=>4
15x
16;=>4
17(def! y (+ 1 7))
18;=>8
19y
20;=>8
21
eb63e565
DM
22;; Verifying symbols are case-sensitive
23(def! mynum 111)
24;=>111
25(def! MYNUM 222)
26;=>222
27mynum
28;=>111
29MYNUM
30;=>222
31
9e8f5211
JM
32;; Check env lookup non-fatal error
33(abc 1 2 3)
34; .*\'abc\' not found.*
70f29a2b
JM
35;; Check that error aborts def!
36(def! w 123)
37(def! w (abc))
38w
39;=>123
31690700
JM
40
41;; Testing let*
42(let* (z 9) z)
43;=>9
44(let* (x 9) x)
45;=>9
46x
47;=>4
48(let* (z (+ 2 3)) (+ 1 z))
49;=>6
50(let* (p (+ 2 3) q (+ 2 p)) (+ p q))
51;=>12
9e8f5211
JM
52(def! y (let* (z 7) z))
53y
54;=>7
31690700 55
6f58a926
GL
56;; Testing outer environment
57(def! a 4)
58;=>4
59(let* (q 9) q)
60;=>9
61(let* (q 9) a)
62;=>4
63(let* (z 2) (let* (q 9) a))
64;=>4
de3f3ed1
JM
65(let* (x 4) (def! a 5))
66;=>5
67a
68;=>4
6f58a926 69
a1eb30fc 70;>>> deferrable=True
46e25689 71;>>> optional=True
9af8aee6 72;;
a1eb30fc 73;; -------- Deferrable/Optional Functionality --------
31690700 74
f5223195
JM
75;; Testing let* with vector bindings
76(let* [z 9] z)
77;=>9
78(let* [p (+ 2 3) q (+ 2 p)] (+ p q))
79;=>12
80
31690700
JM
81;; Testing vector evaluation
82(let* (a 5 b 6) [3 4 a [b 7] 8])
83;=>[3 4 5 [6 7] 8]