関数型言語の勉強にSICPを読もう - (12) 2章 - データによる抽象の構築(63ページ)
問題 2.28
(define (fringe tree) (define (pair-to-list pair) (list (car pair) (car (cdr pair)))) (if (null? tree) '() (if (pair? (car tree)) (append (pair-to-list (car tree)) (fringe (cdr tree))) (append (car tree) (fringe (cdr tree))))))
とか
(define (fringe t) (if (null? t) '() (append (car t) (fringe (cdr t)))))
ものの見事にはまってしまいました。
解答を見たらlist 関数の使い方をきちんと理解できていないことに気づかされた。
あとは if と condの使い分けも微妙。
正解はスマートだなぁ。
(define (fringe tree) (cond ((null? tree) tree) ((not (pair? tree)) (list tree)) (else (append (fringe (car tree)) (fringe (cdr tree))))))
計算機プログラムの構造と解釈
posted with amazlet on 06.04.15
Gerald Jay Sussman Julie Sussman Harold Abelson 和田 英一
ピアソンエデュケーション (2000/02)
売り上げランキング: 56,404
ピアソンエデュケーション (2000/02)
売り上げランキング: 56,404