gpt4 book ai didi

Clojure:懒惰的魔法

转载 作者:行者123 更新时间:2023-12-04 01:40:50 25 4
gpt4 key购买 nike

几乎 2 个相同的程序来生成无限的惰性随机序列。
第一个不会崩溃。第二次崩溃与 OutOfMemoryError 异常。为什么?

;Return infinite lazy sequence of random numbers    
(defn inf-rand[] (lazy-seq (cons (rand) (inf-rand))))

;Never returns. Burns the CPU but won't crash and lives forever.
(last (inf-rand))

但是以下崩溃很快:
;Return infinite lazy sequence of random numbers    
(defn inf-rand[] (lazy-seq (cons (rand) (inf-rand))))
(def r1 (inf-rand))

;Crash with "OutOfMemoryError"
(last r1)

最佳答案

我相信这是一个“抱头”的例子。

通过在第二个示例中引用 r1,您可以在以后说出类似 (first r1) 的内容的可能性。所以你最终会存储你的惰性序列的成员,因为它们被具体化了。

在第一种情况下,Clojure 可以确定对无限序列的早期成员不会做任何事情,因此可以处理它们而不消耗内存。

我自己仍然是一个 Clojure 初学者,非常感谢对我的理解或术语的任何评论或更正。

关于Clojure:懒惰的魔法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1756563/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com