Blame


1 665c255d 2023-08-04 jrmu (define (test-case actual expected)
2 665c255d 2023-08-04 jrmu (newline)
3 665c255d 2023-08-04 jrmu (display "Actual: ")
4 665c255d 2023-08-04 jrmu (display actual)
5 665c255d 2023-08-04 jrmu (newline)
6 665c255d 2023-08-04 jrmu (display "Expected: ")
7 665c255d 2023-08-04 jrmu (display expected)
8 665c255d 2023-08-04 jrmu (newline))
9 665c255d 2023-08-04 jrmu
10 665c255d 2023-08-04 jrmu ;; Exercise 2.39. Complete the following definitions of reverse (exercise 2.18) in terms of fold-right and fold-left from exercise 2.38:
11 665c255d 2023-08-04 jrmu
12 665c255d 2023-08-04 jrmu (define (reverse-right sequence)
13 665c255d 2023-08-04 jrmu (fold-right (lambda (x y)
14 665c255d 2023-08-04 jrmu (append y
15 665c255d 2023-08-04 jrmu (list x)))
16 665c255d 2023-08-04 jrmu '()
17 665c255d 2023-08-04 jrmu sequence))
18 665c255d 2023-08-04 jrmu (define (reverse-left sequence)
19 665c255d 2023-08-04 jrmu (fold-left (lambda (x y)
20 665c255d 2023-08-04 jrmu (cons y x))
21 665c255d 2023-08-04 jrmu '()
22 665c255d 2023-08-04 jrmu sequence))
23 665c255d 2023-08-04 jrmu
24 665c255d 2023-08-04 jrmu ;; '(1 2 3 4 5 6)
25 665c255d 2023-08-04 jrmu ;; (iter (op result (car items)) (cdr items))
26 665c255d 2023-08-04 jrmu (test-case (reverse-right '(1 2 3 4 5 6)) '(6 5 4 3 2 1))
27 665c255d 2023-08-04 jrmu (test-case (reverse-right '((1 2) (3) (4 (5 6)))) '((4 (5 6)) (3) (1 2)))
28 665c255d 2023-08-04 jrmu (test-case (reverse-left '(1 2 3 4 5 6)) '(6 5 4 3 2 1))
29 665c255d 2023-08-04 jrmu (test-case (reverse-left '((1 2) (3) (4 (5 6)))) '((4 (5 6)) (3) (1 2)))