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 (define (scale-tree tree factor)
11 665c255d 2023-08-04 jrmu (cond ((null? tree) '())
12 665c255d 2023-08-04 jrmu ((not (pair? tree)) (* factor tree))
13 665c255d 2023-08-04 jrmu (else (cons (scale-tree (car tree) factor)
14 665c255d 2023-08-04 jrmu (scale-tree (cdr tree) factor)))))
15 665c255d 2023-08-04 jrmu
16 665c255d 2023-08-04 jrmu (define (scale-tree tree factor)
17 665c255d 2023-08-04 jrmu (map (lambda (sub-tree)
18 665c255d 2023-08-04 jrmu (if (pair? sub-tree)
19 665c255d 2023-08-04 jrmu (scale-tree sub-tree factor)
20 665c255d 2023-08-04 jrmu (* factor sub-tree)))
21 665c255d 2023-08-04 jrmu tree))
22 665c255d 2023-08-04 jrmu
23 665c255d 2023-08-04 jrmu ;; Exercise 2.30. Define a procedure square-tree analogous to the square-list procedure of exercise 2.21. That is, square-list should behave as follows:
24 665c255d 2023-08-04 jrmu
25 665c255d 2023-08-04 jrmu (define (square-tree tree)
26 665c255d 2023-08-04 jrmu (cond ((null? tree) '())
27 665c255d 2023-08-04 jrmu ((not (pair? tree)) (* tree tree))
28 665c255d 2023-08-04 jrmu (else (cons (square-tree (car tree))
29 665c255d 2023-08-04 jrmu (square-tree (cdr tree))))))
30 665c255d 2023-08-04 jrmu
31 665c255d 2023-08-04 jrmu (test-case (square-tree
32 665c255d 2023-08-04 jrmu (list 1
33 665c255d 2023-08-04 jrmu (list 2 (list 3 4) 5)
34 665c255d 2023-08-04 jrmu (list 6 7)))
35 665c255d 2023-08-04 jrmu '(1 (4 (9 16) 25) (36 49)))
36 665c255d 2023-08-04 jrmu
37 665c255d 2023-08-04 jrmu ;; Define square-tree both directly (i.e., without using any higher-order procedures) and also by using map and recursion.
38 665c255d 2023-08-04 jrmu
39 665c255d 2023-08-04 jrmu (define (square-tree-map tree)
40 665c255d 2023-08-04 jrmu (map (lambda (sub-tree)
41 665c255d 2023-08-04 jrmu (if (pair? sub-tree)
42 665c255d 2023-08-04 jrmu (square-tree-map sub-tree)
43 665c255d 2023-08-04 jrmu (* sub-tree sub-tree)))
44 665c255d 2023-08-04 jrmu tree))
45 665c255d 2023-08-04 jrmu
46 665c255d 2023-08-04 jrmu (test-case (square-tree-map
47 665c255d 2023-08-04 jrmu (list 1
48 665c255d 2023-08-04 jrmu (list 2 (list 3 4) 5)
49 665c255d 2023-08-04 jrmu (list 6 7)))
50 665c255d 2023-08-04 jrmu '(1 (4 (9 16) 25) (36 49)))