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)))

results matching ""

    No results matching ""