【发布时间】:2011-02-16 01:24:02
【问题描述】:
以下过程如何工作:
(define integers
(cons-stream 1
(stream-map (lambda (x) (+ x 1))
integers))
【问题讨论】:
以下过程如何工作:
(define integers
(cons-stream 1
(stream-map (lambda (x) (+ x 1))
integers))
【问题讨论】:
这里要意识到的重要一点是,只有那些计算您正在访问的列表元素所必需的表达式才会被计算。
因此,当您访问第一个元素时,它会将第一个参数评估为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。以此类推。
【讨论】: