2015/10/19

SICP 問題 2.27

(define x (list (list 1 2) (list 3 4)))

(define (reverse items)
  (if (null? items)
      items
      (append (reverse (cdr items)) (list (car items)))))

(define (deep-reverse items)
  (cond ((null? items) nil)
        ((pair? items) (append (deep-reverse (cdr items))
                               (list (deep-reverse (car items)))))
        (else items)))
gosh> (deep-reverse x)
((4 3) (2 1))
gosh> (define y (list (list 1 2) (list 3 4 (list 5 6 7))))
y
gosh> (deep-reverse y)
(((7 6 5) 4 3) (2 1))

© 2022 wat-aro