#lang racket
(define (fringe items)
(cond ((null? items) null)
((not (pair? (car items))) (cons (car items) (fringe (cdr items))))
(else (append (fringe (car items)) (fringe (cdr items))))))
(define a '((1 2 3) (4 5 6)))
(define b '((1 2 (1 2 (1 2 3))) ((1 2 3) (1 2 3) 6)))
(define c '(1 2 (3 (4)) 5 6))
(fringe a)
(fringe b)
(fringe c)
运行结果
'(1 2 3 4 5 6)
'(1 2 1 2 1 2 3 1 2 3 1 2 3 6)
'(1 2 3 4 5 6)