Ex 2.28

(define (fringe xs)
  (cond ((null? xs) xs)
        ((not (pair? (car xs))) (cons (car xs) (fringe (cdr xs))))
        (else (append (fringe (car xs)) (fringe (cdr xs))))))

という解答を作ったのだが、テキストを読み進めるとわかるとおり以下で足りるらしい:

(define (fringe xs)
  (cond ((null? xs) xs)
        ((not (pair? xs)) (list xs))
        (else (append (fringe (car xs)) (fringe (cdr xs))))))

条件節の二番目が仕事をしすぎている、ということだなあ。