;; ;; let testing ;; ;; (assert (not (bound? var1))) ;; (assert (not (bound? var2))) ;; (assert (not (bound? var3))) ;; (let ((var1 1) ;; (var2 [1 2 3]) ;; (var3 {1 2 3 4})) ;; (assert (bound? var1)) ;; (assert (bound? var2)) ;; (assert (bound? var3)) ;; (assert (= var1 1)) ;; (assert (= var2 [1 2 3])) ;; (assert (= var3 {1 2 3 4}))) ;; (assert (not (bound? var1))) ;; (assert (not (bound? var2))) ;; (assert (not (bound? var3))) ;; (assert (= (let ((val 'sym)) ;; val) ;; 'sym)) ;; (assert (= (let () ;; 'sym) ;; 'sym)) ;; ;; ;; ;; Quasiquote testing ;; ;; ;; (assert (= '() `())) ;; (assert (= '(1 1 2) ;; `(1 1 2))) ;; (assert (= '(1 1 2) ;; `(1 ,1 2))) ;; (assert (= '(1 1 2) ;; `(1 ,(- 10 9) 2))) ;; (assert (= '(1 1 2) ;; `(1 ,@(list 1 2)))) ;; (let ((body '(2 3))) ;; (assert (= '(1 2 3) ;; `(1 ,@body)))) (let ((body '((define a 1) (define b 2))) (imports '())) (let ((expr `(begin ,@(map (lambda (x) `(import ,x)) imports) ,@body))) (assert (= '(begin (define a 1) (define b 2)) expr)) (eval expr) (assert (= a 1)) (assert (= b 2)) ))