;; IN: a Tree, a function of one argument ;; OUT: a Tree, result of applying input funct on ;; every datum in the input Tree (define (tree-map fn tree) (make-tree (fn (datum tree)) (map (lambda (t) (tree-map fn t)) (children tree)))) ;; map definition: (define (map fn ls) (if (null? ls) '() (cons (fn (car ls)) (map fn (cdr ls))))) ;; mutual recursion version (define (tree-map fn tree) (make-tree (fn (datum tree)) (tree-map-f fn (children tree)))) (define (tree-map-f fn forest) (if (null? forest) '() (cons (tree-map fn (car forest)) (tree-map-f fn (cdr forest)))))