SICP Exercise 3.51 showing delayed evaluation
Exercise 3.51. In order to take a closer look at delayed evaluation, we will use the following procedure, which simply returns its argument after printing it: (define (show x) (display-line x) x) What does the interpreter print in response to evaluating each expression in the following sequence? 59 (define x (stream-map show (stream-enumerate-interval 0 10))) (stream-ref x 5) (stream-ref x 7) SOLUTION The code and tests are here . Note: I spent a lot of time tracing through the logic to see what really happens here. The delayed evaluation of items in streams combined with new streams being produced in procedure stream-map makes it really confusing. Also, note that in Racket, both the car part and the cdr part of the stream are delayed evaluations until the point of need.