Clojure 传感器是否急切?

2023-11-26

在这篇博客文章中,“JavaScript 中的 CSP 和转换器”,作者指出:

首先,我们必须认识到许多数组(或其他集合)操作,例如map, filter and reverse可以定义为reduce.

So 然后我们看到Clojure 中的许多实现并不是懒惰的,而是渴望的:

 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 传感器是否渴望?


传感器是非常简单的函数——它们没有惰性的概念,或者事实上,根本没有它们如何应用的概念。这就是这个想法的美妙之处 - 使用传感器,我们可以分离功能,例如map and filter来自他们所操作的事物。

所以,是的,他们can用于构建惰性序列以及通道和归约。虽然转换器函数调用本身是急切的,但这取决于您将转换器交给什么东西来调用它。惰性序列只能在传感器被消耗时才懒惰地调用它们,而减速器将急切地使用它们来吐出减少量。

你可以看到在源中 where sequence用于通过转换器在集合上构建惰性序列。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Clojure 传感器是否急切? 的相关文章

随机推荐