Scheme中的Streams

Unk*_*ser 2 scheme stream

以下过程如何工作:

(define integers
  (cons-stream 1 
     (stream-map (lambda (x) (+ x 1)) 
        integers))
Run Code Online (Sandbox Code Playgroud)

sep*_*p2k 7

这里要认识到的重要一点是,只计算那些需要计算你正在访问的列表元素的表达式.

所以,当你访问的第一个元素,它的计算结果的第一个参数cons-stream1.

当您访问第二个元素时,它会计算第一个元素stream-map (lambda (x) (+ x 1)) integers.对于它需要获得的第一个元素integers1,然后添加1到,你会得到2.

当您访问第三个元素时,它会计算第二个元素stream-map (lambda (x) (+ x 1)) integers.所以它需要integers(2)的第二个元素并添加1到它3.等等.