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))