<< Previous exercise (2.29) | Index | Next exercise (2.31) >>
an alternative version of map but doesn't use cond and doesn't need to check for nil.
(define (square-tree tree)
(map (lambda (sub-tree)
(if (pair? sub-tree)
(square-tree sub-tree)
(square sub-tree)))
tree))
This problem is similar to the example "scale-tree". so we can solve it as following:
(define (square-tree1 tree) (cond ((null? tree) '()) ((not (pair? tree)) (* tree tree)) (else (cons (square-tree1 (car tree)) (square-tree1 (cdr tree)))))) (define (square-tree2 tree) (map (lambda (x) (if (pair? x) (square-tree2 x) (* x x))) tree))
jz