SICP 2.54
equal?を実装する。たしかLittle Schemerあたりに出てた。
(define (equal? a b) (cond ((not (pair? a)) (eq? a b)) ((not (pair? b)) #f) ((null? a) (null? b)) (else (and (equal? (car a) (car b)) (equal? (cdr a) (cdr b)))))) ; test (equal? '(1 2 a b) '(1 2 a b)) ; #t (equal? '(1 2 a b) '(1 2 a)) ; #f (equal? '(1 (2 (3) 4) a) '(1 (2 (3) 4) a)) ; #t (equal? '(1 (2 (3) 4) a) '(1 (2 (3) (4) a))) ; #f (equal? '(1) 1) ; #f