; Basic syntax tests (define _assert-eq_ (macro (a b) (list cond (list (list eq? a b) ) (list 'else (list display "failed: ") (list write (list quote a)) (list newline) (list exit 1) ) ) ) ) (define _assert-equal_ (macro (a b) (list cond (list (list equal? a b) ) (list 'else (list display "failed: ") (list write (list quote a)) (list newline) (list exit 1) ) ) ) ) (_assert-eq_ (or #f #t) #t) (_assert-eq_ (and #t #f) #f) (_assert-eq_ (if (> 3 2) 'yes) 'yes) (_assert-eq_ (if (> 3 2) 'yes 'no) 'yes) (_assert-eq_ (if (> 2 3) 'no 'yes) 'yes) (_assert-eq_ (if (> 2 3) 'no) #f) (_assert-eq_ (letrec ((a 1) (b a)) (+ a b)) 2) (_assert-eq_ (equal? '(a b c) '(a b c)) #t) (_assert-eq_ (equal? '(a b c) '(a b b)) #f) (_assert-equal_ (member '(2) '((1) (2) (3))) '((2) (3))) (_assert-equal_ (member '(4) '((1) (2) (3))) #f) (_assert-equal_ (memq 2 '(1 2 3)) '(2 3)) (_assert-equal_ (memq 4 '(1 2 3)) #f) (_assert-equal_ (memq '(2) '((1) (2) (3))) #f) (_assert-equal_ (assq 'a '((a 1) (b 2) (c 3))) '(a 1)) (_assert-equal_ (assoc '(c) '((a 1) (b 2) ((c) 3))) '((c) 3)) (_assert-equal_ (map cadr '((a b) (d e) (g h))) '(b e h))