SICP問題2.27

reverse の定義修正版

(define (reverse x)
  (define (iter rest result)
    (if (null? rest)
        result
        (iter (cdr rest) (cons (car rest) result))))
  (iter x (list)))

deep-reverseの定義

(define (deep-reverse x)
  (define (iter rest result)
    (cond ((null? rest) result)
          ((pair? (car rest))
            (iter (cdr rest)
              (cons 
                (iter (car rest) (list)) result)))
          (else
            (iter (cdr rest) (cons (car rest) result)))))
  (iter x (list)))