summaryrefslogtreecommitdiff
path: root/coding-exercises/2/27.rkt
blob: b52f7b3001b3429a0803115906f62c6ce1356faf (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#lang racket
(require sicp)

(define (reverse l)
  (define (iter l p)
   (cond
     ((null? l) p)
     (else
      (iter
        (cdr l)
        (cons (car l) p)))))
  (iter l (list)))

(define (deep-reverse nested-list)
  (define (iter l p)
   (cond
     ((null? l) p)
     ((pair? (car l))
      (iter (cdr l)
            (cons (iter (car l) nil)
                  p)))
     (else
      (iter
        (cdr l)
        (cons (car l) p)))))
  (iter nested-list nil))

(deep-reverse (list (list 1 2) (list 3 4)))