list - 无限列表对任何现实世界的应用程序都有用吗?

标签 list haskell lazy-evaluation infinite

我已经使用 Haskell 有一段时间了,并且我已经阅读了 Real World Haskell 和 Learn You a Haskell 的大部分内容。我想知道的是,是否存在使用惰性求值的语言,特别是具有无限列表的“优势”,是否有无限列表使任务变得非常容易,甚至只有无限列表才能完成的任务名单?

最佳答案

这是一个非常简单但实际上日常有用的示例,说明无限列表特别有用:当您有一个项目列表要用于初始化某些键值样式的数据结构时,从连续键开始。因此,假设您有一个字符串列表,并且想将它们放入 IntMap 中。从 0 开始计数。如果没有懒惰的无限列表,你会做一些事情,比如沿着输入列表走下去,保持一个正在运行的“下一个索引”计数器并建立 IntMap当你去时。

对于无限懒惰列表,列表本身充当运行计数器的角色;只需使用 zip [0..]使用您要分配索引的项目列表,然后 IntMap.fromList构建最终结果。

当然,这两种情况本质上是一样的。但是使用惰性无限列表可以让您更直接地表达概念,而不必担心输入列表的长度或跟踪额外计数器等细节。

关于list - 无限列表对任何现实世界的应用程序都有用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4490790/

相关文章:

haskell - 也许在一个单子(monad)中

performance - 按广度优先顺序列出目录的所有内容会导致效率低下

java - flatMap 的方法级通用类型

python - 如何最好的方式将一个列表转换为具有列表中的元素对的新列表?

C++ list::sort <未解析的重载函数类型>

haskell - Haskell 会出现哪些类型的运行时错误?

Haskell 对(位 a)推断类型错误的困惑

haskell - 在 Haskell 中表达递归 - 素数序列

python [:-1] vs remove

python - 比较两个表中的两个值并追加