問題 2.31
(define (square x) (* x x)) (define (square-tree tree) (tree-map square tree)) ;高階手続き無しの形。 (define (tree-map f tree) (cond ((null? tree) null) ((not (pair? tree)) (f tree)) (else (cons (tree-map f (car tree)) (tree-map f (cdr tree)))))) (square-tree (list 1 (list 2 (list 3 4) 5) (list 6 7))) ;-> (1 (4 (9 16) 25) (36 49)) ;map再帰の形。 (define (tree-map f tree) (map (lambda (item) (if (pair? item) (tree-map f item) (f item))) tree)) (square-tree (list 1 (list 2 (list 3 4) 5) (list 6 7))) ;-> (1 (4 (9 16) 25) (36 49))