Note: this wiki is now retired and will no longer be updated!

The static final versions of the pages are left as a convenience for readers. Note that meta-pages such as "discussion," "history," etc., will not work.

SICP exercise 2.31

From Drewiki
Jump to: navigation, search

Problem

Abstract your answer to exercise 2.30 to produce a procedure tree-map with the property that square-tree could be defined as

(define (square-tree tree) (tree-map square tree))

Solution

Here's one way to do it:

(define nil (quote ()))
 
(define (square x) (* x x))
 
(define (tree-map f tree)
  (map (lambda (sub-tree)
         (if (pair? sub-tree)
             (tree-map f sub-tree)
             (f sub-tree)))
       tree))

Test:

(square-tree
 (list 1
       (list 2 (list 3 4) 5)
       (list 6 7)))

Output:

(1 (4 (9 16) 25) (36 49))
Personal tools