序列和流都使用的是惰性求值。
在编程语言理论中,惰性求值(Lazy Evaluation)也称为传需求调用(call-by-need),是计算机编程中的一个概念,目的是最小化计算机要做的工作。它有两个相关而又有区别的含意,可以表示为“延迟求值”和“最小化求值”。除了可以得到性能的提升外,惰性计算的重要好处是可以构造一个无限的数据类型。
表3-2列举了序列和流的一些区别。
表3-2 序列和流的区别
从易用性、性能角度来看,如果要从序列和流中做出选择,笔者偏向于序列。