Exercise 3.51.
(define (show x) (display-line x) x) (define x (stream-map show (stream-enumerate-interval 0 10))) (stream-ref x 5) (stream-ref x 7)
が、どういう出力になるかという問題。
- (cons-stream a b) だと a は即座に評価される。
- ということは stream-enumerate-interval と stream-map も一番最初の要素は即座に評価される。
- streadm-ref で stream を辿る度に show が実行される
- 一度 force した stream の要素 (という説明で合ってるのだろうか) は memo 化される
の 3 点から、答えは
(define (show x) (display-line x) x) (define x (stream-map show (stream-enumerate-interval 0 10))) 0 (stream-ref x 5) 1 2 3 4 5 5 ; <-- これは (streadm-ref x 5) の結果 (stream-ref x 7) 6 7 7 ; <-- これは (stream-ref x 7 ) の結果
でいいのかな。