mirror of
https://github.com/kanaka/mal.git
synced 2024-10-26 14:22:25 +03:00
80 lines
987 B
Plaintext
80 lines
987 B
Plaintext
;; Testing REPL_ENV
|
|
(+ 1 2)
|
|
;=>3
|
|
(/ (- (+ 5 (* 2 3)) 3) 4)
|
|
;=>2
|
|
|
|
|
|
;; Testing def!
|
|
(def! x 3)
|
|
;=>3
|
|
x
|
|
;=>3
|
|
(def! x 4)
|
|
;=>4
|
|
x
|
|
;=>4
|
|
(def! y (+ 1 7))
|
|
;=>8
|
|
y
|
|
;=>8
|
|
|
|
;; Verifying symbols are case-sensitive
|
|
(def! mynum 111)
|
|
;=>111
|
|
(def! MYNUM 222)
|
|
;=>222
|
|
mynum
|
|
;=>111
|
|
MYNUM
|
|
;=>222
|
|
|
|
;; Check env lookup non-fatal error
|
|
(abc 1 2 3)
|
|
;/.*\'?abc\'? not found.*
|
|
;; Check that error aborts def!
|
|
(def! w 123)
|
|
(def! w (abc))
|
|
w
|
|
;=>123
|
|
|
|
;; Testing let*
|
|
(let* (z 9) z)
|
|
;=>9
|
|
(let* (x 9) x)
|
|
;=>9
|
|
x
|
|
;=>4
|
|
(let* (z (+ 2 3)) (+ 1 z))
|
|
;=>6
|
|
(let* (p (+ 2 3) q (+ 2 p)) (+ p q))
|
|
;=>12
|
|
(def! y (let* (z 7) z))
|
|
y
|
|
;=>7
|
|
|
|
;; Testing outer environment
|
|
(def! a 4)
|
|
;=>4
|
|
(let* (q 9) q)
|
|
;=>9
|
|
(let* (q 9) a)
|
|
;=>4
|
|
(let* (z 2) (let* (q 9) a))
|
|
;=>4
|
|
|
|
;>>> deferrable=True
|
|
;>>> optional=True
|
|
;;
|
|
;; -------- Deferrable/Optional Functionality --------
|
|
|
|
;; Testing let* with vector bindings
|
|
(let* [z 9] z)
|
|
;=>9
|
|
(let* [p (+ 2 3) q (+ 2 p)] (+ p q))
|
|
;=>12
|
|
|
|
;; Testing vector evaluation
|
|
(let* (a 5 b 6) [3 4 a [b 7] 8])
|
|
;=>[3 4 5 [6 7] 8]
|