53 lines
1.8 KiB
Scheme
53 lines
1.8 KiB
Scheme
;;; begin ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
(assert-equal '() (begin))
|
|
(assert-equal 123 (begin 123))
|
|
(assert-equal 456 (begin 123 456))
|
|
(assert-equal 789 (begin 123 456 789))
|
|
|
|
;;; define ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
(assert-equal
|
|
'(123 579)
|
|
(begin
|
|
(define x 123)
|
|
(define y (+ x 456))
|
|
(list x y)))
|
|
(assert-equal
|
|
'(123 456)
|
|
(begin
|
|
(define x 123)
|
|
(define old x)
|
|
(define x 456)
|
|
(list old x)))
|
|
|
|
;;; if ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
(assert-equal 123 (if #true 123 456))
|
|
(assert-equal 123 (if "foo" 123 456))
|
|
(assert-equal 456 (if #false 123 456))
|
|
|
|
;;; let ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
(assert-equal 'foo (let () 'foo))
|
|
(assert-equal '(1) (let { [a 1] } (list a)))
|
|
(assert-equal '(1 2) (let { [a 1] [b 2] } (list a b)))
|
|
(assert-equal '(1 3) (let { [a 1] [b (+ a 2)] } (list a b)))
|
|
(assert-equal '(1 2 3) (let { [a 1] [b 2] [c 3] } (list a b c)))
|
|
(assert-equal '(1 3 6) (let { [a 1] [b (+ a 2)] [c (+ b 3)] } (list a b c)))
|
|
|
|
;;; quote ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
(assert-equal '+ (quote +))
|
|
(assert-equal '+ '+)
|
|
(assert-equal '() (quote ()))
|
|
(assert-equal '() '())
|
|
(assert-equal #true (quote #true))
|
|
(assert-equal #true '#true)
|
|
(assert-equal #false (quote #false))
|
|
(assert-equal #false '#false)
|
|
;(assert-equal #\n (quote #\n))
|
|
;(assert-equal #\n '#\n)
|
|
(assert-equal 'foo (quote foo))
|
|
(assert-equal 'foo 'foo)
|
|
(assert-equal "foo" (quote "foo"))
|
|
(assert-equal "foo" '"foo")
|
|
(assert-equal 123 (quote 123))
|
|
(assert-equal 123 '123)
|
|
(assert-equal '(cons 123 456) (quote (cons 123 456)))
|
|
(assert-equal '(cons 123 456) '(cons 123 456))
|