; ======================================================================
;
; Structure and Interpretation of Computer Programs
; (trial answer to excercises)
;
; 计算机程序的构造和解释(习题试解)
;
; created: code17 07/28/05
; modified:
; (保持内容完整不变前提下,可以任意转载)
; ======================================================================
;; SICP No.2.30
(require (lib "math.ss"))
(define (square-tree-basic tree)
(cond ((null? tree) ())
((not (pair? tree)) (sqr tree))
(else (cons (square-tree-basic (car tree))
(square-tree-basic (cdr tree))))))
(define (square-tree-with-map tree)
(map (lambda (sub-tree)
(if (pair? sub-tree)
(square-tree-with-map sub-tree)
(sqr sub-tree)))
tree))
;; Test-it:
;; Welcome to MzScheme version 209, Copyright (c) 2004 PLT Scheme, Inc.
;; > (define tree-1
;; (list 1
;; (list 2 (list 3 4) 5)
;; (list 6 7)))
;; > tree-1
;; (1 (2 (3 4) 5) (6 7))
;; > (square-tree-basic tree-1)
;; (1 (4 (9 16) 25) (36 49))
;; > (square-tree-with-map tree-1)
;; (1 (4 (9 16) 25) (36 49))