clojure - 在 clojure 中创建一个列表 "unlazy"

标签 clojure evaluation lazy-evaluation

我最近注意到这里有一个非常清晰的插入排序实现:

Insertion sort in clojure throws StackOverFlow error

  • 由于 concat 懒惰地连接列表,它遭受内存溢出。我想知道:

  • 当我们想要在大型集合上获得更好的性能时,我们可以应用什么策略来“消除”列表?

    最佳答案

    doall强制惰性求值当然没问题。

    要记住的另一件有用的事情是 reduce不懒惰。因此,这在大型计算中非常有用,可确保在计算进行之前评估中间结果并将其减少为单个输出值。

    关于clojure - 在 clojure 中创建一个列表 "unlazy",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9865105/

    相关文章:

    clojure - 客观思考与功能思考

    c# - 缓存来自 [n async] 工厂方法的结果,前提是它不抛出

    Clojure Luminus Migrations - 每个迁移文件只有一张表

    javascript - 使用 Clojure 向 JavaScript 添加语法

    package - SLIME 交互式开发 - 将代码粘贴到 SLIME REPL != 来自缓冲区的 eval 命令

    haskell - Haskell 中特定列表理解的解释

    haskell - 空内存配置文件

    Java,没有同步的延迟初始化字段

    clojure - 在clojure中向 map 添加类型的最简单方法

    list - Scala:如何创建包含多个元素的 "eager evaluated"列表?