Clojure:懒惰序列和"普通"序列

时间:2016-01-31 21:57:49

标签: clojure lazy-evaluation lazy-sequences

在Clojure中,"普通"之间有什么区别?序列和懒惰序列?

请看这个链接: https://clojuredocs.org/clojure.core/partition#partition-by

它说功能"分区"返回一个惰性序列。如何使以下序列"懒惰" ?

  

((0 1 2 3)(4 5 6 7)(8 9 10 11)(12 13 14 15)(16 17 18 19))

1 个答案:

答案 0 :(得分:0)

使用者> (时间(def lazy-partition(分区3(范围1000000)))) "经过的时间:0.165415毫秒"

使用者> (时间(def eager-partition(doall(分区3(范围1000000))))) "经历时间:2181.272597 msecs"

通常,clojure中的序列是懒惰的。这意味着他们实际上不会评估序列,直到需要数据时注意分区如何立即返回。第二个使用doall来强制评估,注意它如何运行需要两秒钟。

相关问题