1 (define (test-case actual expected)
10 (define (scale-tree tree factor)
11 (cond ((null? tree) '())
12 ((not (pair? tree)) (* factor tree))
13 (else (cons (scale-tree (car tree) factor)
14 (scale-tree (cdr tree) factor)))))
16 (define (scale-tree tree factor)
17 (map (lambda (sub-tree)
19 (scale-tree sub-tree factor)
23 ;; 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:
25 (define (square-tree tree)
26 (cond ((null? tree) '())
27 ((not (pair? tree)) (* tree tree))
28 (else (cons (square-tree (car tree))
29 (square-tree (cdr tree))))))
31 (test-case (square-tree
35 '(1 (4 (9 16) 25) (36 49)))
37 ;; Define square-tree both directly (i.e., without using any higher-order procedures) and also by using map and recursion.
39 (define (square-tree-map tree)
40 (map (lambda (sub-tree)
42 (square-tree-map sub-tree)
43 (* sub-tree sub-tree)))
46 (test-case (square-tree-map
50 '(1 (4 (9 16) 25) (36 49)))