SICP問題2.28
fringeの定義
(define (fringe x) (define (iter rest result) (cond ((null? rest) result) ((pair? (car rest)) (iter (cdr rest) (append result (iter (car rest) (list))))) (else (iter (cdr rest) (append result (list (car rest))))))) (iter x (list)))
テスト
(define x (list (list 1 2) (list 3 4))) ; ((1 2) (3 4)) (fringe x) ; (1 2 3 4) (fringe (list x x)) ; (1 2 3 4 1 2 3 4)