以下过程如何工作:
(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.等等.