2016/01/21
SICP 問題 4.74
;; negate, lisp-value, singleton-streamはflatten-streamを変更して直列にしても問題ないのではという問題
;; 元のflatten-stream
(define (flatten-stream stream)
(if (stream-null? stream)
the-empty-stream
(interleave-delayed
(stream-car stream)
(delay (flatten-stream (stream-cdr stream))))))
;; a 差し込みを使わないsimple-flattenの実装
(define (simbple-stream-flatmap proc s)
(simple-flatten (stream-map proc s)))
(define (simple-flatten stream)
(stream-map stream-car
(stream-filter (lambda (s) (not (null? s)))
stream)))
;; b
;; negate, lisp-valueはsinbleton-streamを取るので交互にしても直列にしても結果は変わらない.
;; find-assertionsの場合はfetch-assertionsで対応する表明を集めてきているので同じく変わらない.