#lang racket
(define (square x) (* x x))
(define (tree-map proc tree)
(map (lambda (sub-tree)
(if (not (pair? sub-tree)) (proc sub-tree)
(tree-map proc sub-tree))) tree))
(define (square-tree tree) (tree-map square tree))
(define a-tree '(1 (2 (3 4) 5) (6 7)))
(square-tree a-tree)
运行结果
'(1 (4 (9 16) 25) (36 49))