练习2.30-2.32

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

你可能感兴趣的:(练习2.30-2.32)