24 lines
489 B
Scheme
24 lines
489 B
Scheme
(define (square x) (* x x))
|
|
|
|
(define (square-tree tree)
|
|
(cond ((null? tree) '())
|
|
((not (pair? tree)) (square tree))
|
|
(else
|
|
(cons (square-tree (car tree))
|
|
(square-tree (cdr tree))))))
|
|
|
|
(define (square-tree-map tree)
|
|
(map (lambda (sub-tree)
|
|
(if (pair? sub-tree)
|
|
(square-tree-map sub-tree)
|
|
(square sub-tree)))
|
|
tree))
|
|
|
|
(define (tree-map fn tree)
|
|
(map (lambda (sub-tree)
|
|
(if (pair? sub-tree)
|
|
(tree-map fn sub-tree)
|
|
(fn sub-tree)))
|
|
tree))
|
|
|