2.31

练习 2.31 将你在练习2.30做出的解答进一步抽象,做出一个过程,使它的性质保证能以下面形式定义square-tree:

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

这相当于是2.30再来一个第三种定义square-tree的方式。仔细观察2.30练习的第二种实现方式,其实已经很接近了本题的要求,只是将 square 的过程硬绑定到了 map tree 的过程中,只需要将这个 square 过程抽象出来,变成一个参数,即可:

 
(define (square x) (* x x))
(define (tree-map proc tree) 
  (if
   (pair? tree)
   (cons (tree-map proc (car tree)) (tree-map proc (cdr tree)))
   (if (null? tree)
       '()
       (proc tree)
       )
   )
  )
(define (square-tree tree) (tree-map square tree))
(square-tree
 (list 1
       (list 2
             (list 3 4) 5)
       (list 6 7)))
x
 
(1 (4 (9 16) 25) (36 49))

results matching ""

    No results matching ""