【问题标题】:Streams in SchemeScheme中的流
【发布时间】:2011-02-16 01:24:02
【问题描述】:

以下过程如何工作:

(define integers
  (cons-stream 1 
     (stream-map (lambda (x) (+ x 1)) 
        integers))

【问题讨论】:

    标签: stream scheme


    【解决方案1】:

    这里要意识到的重要一点是,只有那些计算您正在访问的列表元素所必需的表达式才会被计算。

    因此,当您访问第一个元素时,它会将第一个参数评估为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。以此类推。

    【讨论】:

    • 感谢您的评论!之所以只取整数的第二个元素是因为我们使用的是“stream-map”吗?
    • @Nir:是的,因为所有的流函数都是惰性的,它只需要尽可能多地给你请求的元素。
    猜你喜欢
    • 2021-03-13
    • 2020-05-11
    • 2015-05-04
    • 2014-01-31
    • 2010-11-11
    • 2014-05-01
    • 1970-01-01
    • 2010-10-11
    • 1970-01-01
    相关资源
    最近更新 更多