exercise 3.50~51
3.50
(define (stream-map proc . argstreams) (if (stream-null? (car argstreams)) the-empty-stream (cons-stream (apply proc (map stream-car argstreams)) (apply stream-map (cons proc (map stream-cdr argstreams))))))
applyの最後の引数はリストなのか
3.51
gosh> (define x (stream-map show (stream-enumerate-interval 0 10))) 0x gosh> (stream-ref x 5) 1 2 3 4 55 gosh> (stream-ref x 7) 6 77
一回目の呼び出しだと、showが呼ばれる。
それ以降はメモ化してるのでshowがよばれない
そんなこんなで、こういう結果に。
ちなみにメモ化しない場合は、何回やっても結果は一緒。
ちなみにdelayとかの実装は以下を参照
http://d.hatena.ne.jp/motemen/20060628/1151483118