Blame


1 665c255d 2023-08-04 jrmu ;; Exercise 2.27. Modify your reverse procedure of exercise 2.18 to produce a deep-reverse procedure that takes a list as argument and returns as its value the list with its elements reversed and with all sublists deep-reversed as well. For example,
2 665c255d 2023-08-04 jrmu
3 665c255d 2023-08-04 jrmu (define (deep-reverse tree)
4 665c255d 2023-08-04 jrmu (cond ((null? tree) '())
5 665c255d 2023-08-04 jrmu ((not (pair? tree)) tree)
6 665c255d 2023-08-04 jrmu (else (append
7 665c255d 2023-08-04 jrmu (deep-reverse (cdr tree))
8 665c255d 2023-08-04 jrmu (list (deep-reverse (car tree)))))))
9 665c255d 2023-08-04 jrmu
10 665c255d 2023-08-04 jrmu (define (test-case actual expected)
11 665c255d 2023-08-04 jrmu (newline)
12 665c255d 2023-08-04 jrmu (display "Actual: ")
13 665c255d 2023-08-04 jrmu (display actual)
14 665c255d 2023-08-04 jrmu (newline)
15 665c255d 2023-08-04 jrmu (display "Expected: ")
16 665c255d 2023-08-04 jrmu (display expected)
17 665c255d 2023-08-04 jrmu (newline))
18 665c255d 2023-08-04 jrmu
19 665c255d 2023-08-04 jrmu (define x (list (list 1 2) (list 3 4)))
20 665c255d 2023-08-04 jrmu
21 665c255d 2023-08-04 jrmu (test-case (reverse x) '((3 4) (1 2)))
22 665c255d 2023-08-04 jrmu
23 665c255d 2023-08-04 jrmu (test-case (deep-reverse x) '((4 3) (2 1)))