我无法绕过sequence和LazyList之间的差异。它们既懒惰又可能无限。 .cc框架中的seq<'T>IEnumerable<'T>,而F# PowerPack中包含LazyList。实际上,我遇到序列的次数要比LazyList多得多。

它们在性能,用法,可读性等方面有什么区别?与LazyList相比,seq的声誉如此差的原因是什么?

最佳答案

LazyList仅计算一次每个元素,而不管遍历列表多少次。这样,它更接近Seq.cache返回的序列(而不是典型的序列)。但是,除了缓存之外,LazyList的行为与列表完全相同:它在后台使用了列表结构并支持模式匹配。因此,您可能会说:当您需要列表语义和缓存(除了惰性)时,请使用LazyList代替seq

关于两者都是无限的,seq的内存使用量是恒定的,而LazyList的则是线性的。

这些docs可能值得一读。

关于data-structures - 序列与LazyList,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9201402/

10-10 13:17