以下过程如何运作:
(define integers
(cons-stream 1
(stream-map (lambda (x) (+ x 1))
integers))
答案 0 :(得分:7)
这里要认识到的重要一点是,只计算那些必要的表达式来计算你正在访问的列表的元素。
因此,当您访问第一个元素时,它会评估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
。等等。