以下过程如何工作:
(define integers
(cons-stream 1
(stream-map (lambda (x) (+ x 1))
integers))
Run Code Online (Sandbox Code Playgroud)
这里要认识到的重要一点是,只计算那些需要计算你正在访问的列表元素的表达式.
所以,当你访问的第一个元素,它的计算结果的第一个参数cons-stream
是1
.
当您访问第二个元素时,它会计算第一个元素stream-map (lambda (x) (+ x 1)) integers
.对于它需要获得的第一个元素integers
是1
,然后添加1
到,你会得到2
.
当您访问第三个元素时,它会计算第二个元素stream-map (lambda (x) (+ x 1)) integers
.所以它需要integers
(2
)的第二个元素并添加1
到它3
.等等.