2.30
2.31
2.32
(define (square-tree l)
(cond ((null? l) '())
((not (pair? l)) (square l))
(else (cons (square-tree (car l))
(square-tree (cdr l))))))
(define (square-tree2 l)
(map (lambda (sl)
(if (pair? sl)
(square-tree2 sl)
(square sl)))
l))
2.31
(define (tree-map f l)
(map (lambda (sl)
(if (pair? sl)
(tree-map f sl)
(f sl)))
l))
2.32
(define (subsets s)
(if (null? s)
(list '())
(let ((rest (subsets (cdr s))))
(append rest (map
(lambda (sub)
(cons (car s) sub))
rest)))))