Exercise 3.51.

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 ) の結果

でいいのかな。