2.28 Exercise 2.28
fringe is similar to deep-reverse in that it has three base cases for non-lists, single-item lists, and general lists. However, the non-pair case produces a list, and the general case uses append to keep the resulting list flat. Avoiding appending nil to a list is still done, of course.
(define (fringe l) (cond ((not (pair? l)) (list l)) ((null? (cdr l)) (fringe (car l))) (else (append (fringe (car l)) (fringe (cdr l))))))