我已经使用 Haskell 有一段时间了,并且我已经阅读了 Real World Haskell 和 Learn You a Haskell 的大部分内容。我想知道的是,是否存在使用惰性求值的语言,特别是具有无限列表的“优势”,是否有无限列表使任务变得非常容易,甚至只有无限列表才能完成的任务名单?
最佳答案
这是一个非常简单但实际上日常有用的示例,说明无限列表特别有用:当您有一个项目列表要用于初始化某些键值样式的数据结构时,从连续键开始。因此,假设您有一个字符串列表,并且想将它们放入 IntMap
中。从 0 开始计数。如果没有懒惰的无限列表,你会做一些事情,比如沿着输入列表走下去,保持一个正在运行的“下一个索引”计数器并建立 IntMap
当你去时。
对于无限懒惰列表,列表本身充当运行计数器的角色;只需使用 zip [0..]
使用您要分配索引的项目列表,然后 IntMap.fromList
构建最终结果。
当然,这两种情况本质上是一样的。但是使用惰性无限列表可以让您更直接地表达概念,而不必担心输入列表的长度或跟踪额外计数器等细节。
关于list - 无限列表对任何现实世界的应用程序都有用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4490790/