(define (deep-reverse x) (define (iter tail result) (if (null? tail) result (iter (cdr tail) (cons (deep-reverse (car tail)) result)))) (cond ((null? x) x) ((not (pair? x)) x) (else (iter x '())))) ; 1 ]=> (define x (list (list 1 2) (list 3 4))) ; ; ;Value: x ; ; 1 ]=> x ; ; ;Value: ((1 2) (3 4)) ; ; 1 ]=> (deep-reverse x) ; ; ;Value: ((4 3) (2 1)) ; ; 1 ]=> (deep-reverse '()) ; ; ;Value: () ; ; 1 ]=> (deep-reverse 8) ; ; ;Value: 8 ; ; 1 ]=> (map deep-reverse (map iota (iota 5))) ; ; ;Value: (() (0) (1 0) (2 1 0) (3 2 1 0))