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))))))
条件節の二番目が仕事をしすぎている、ということだなあ。