在此博客条目"CSP and transducers in JavaScript"中,作者指出:



因此,在Clojure中then we see的许多实现并不是很懒,他们很渴望:

 user> (defn eager-map [f coll]
        (reduce (fn [acc v] (conj acc (f v)))
        []
        coll))
#'user/eager-map
user> (eager-map inc (range 10))
[1 2 3 4 5 6 7 8 9 10]

我的问题是,Clojure换能器渴望吗?

最佳答案

换能器是非常简单的功能-它们没有懒惰的概念,或者根本没有应用它们的概念。这就是这个主意的美-通过换能器,我们可以将mapfilter之类的功能与它们所操作的事物分开。

因此,是的,它们可用于构建惰性序列以及 channel 和归约。当换能器函数本身很急切时,它取决于您要换能器对其进行调用的方式。惰性序列只能在消耗换能器时懒惰地调用换能器,而 reducer 会急切地使用它们来吐出 reducer 。

您可以看到in the source,其中sequence用于在带有换能器的集合上构建惰性序列。

09-11 03:30