(define (reverse items)
(define (reverse-iter i p)
(if (null? i)
p
(reverse-iter (cdr i) (cons (car i) p))))
(reverse-iter items null))
(define (deep-reverse items)
(define (reverse-iter i p)
(if (null? i) p
(reverse-iter
(cdr i)
(cons (if (pair? (car i))
(reverse-iter (car i) null)
(car i))
p))))
(reverse-iter items null))
(deep-reverse (list (list 1 2) (list 3 4)))
(deep-reverse (list (list 1 (list 2 3) 4 (list 5 6 (list 7 8) 9) 10) (list 11 12) 13))
(define (deep-reverse x)
(if (list? x)
(reverse (map deep-reverse x))
x))