在关于 Transducers 的 Strange Loop 演示中, Rich Hickey 在表格中提到了一个名为“并行”的概念。
您可以使用传感器轻松查看seqs 和 into 和 channels 的示例。
现在你可以知道 Observables正在谈论 RxJava。
我的问题是Rich Hickey 的转换器 Strange Loop 谈话中的“并行”概念是什么?这是futures列表,还是 pmap 或其他东西?
在关于 Transducers 的 Strange Loop 演示中, Rich Hickey 在表格中提到了一个名为“并行”的概念。
您可以使用传感器轻松查看seqs 和 into 和 channels 的示例。
现在你可以知道 Observables正在谈论 RxJava。
我的问题是Rich Hickey 的转换器 Strange Loop 谈话中的“并行”概念是什么?这是futures列表,还是 pmap 或其他东西?
已经有一些关于创建并行可转换过程的想法。这被跟踪为CLJ-1553。目前我们不打算在 Clojure 1.7 中解决这个问题,但希望在 Clojure 1.8 中做一些事情。
现在可以设置一个使用转换器作为底部归约阶段的归约器(以及更传统的组合器 fns),但理想情况下,我们将能够利用持久向量和映射所体现的“自我归约”概念来支持转换器以更自然的方式并行。
现在最有可能的是,这将作为某种 preduce 函数出现,但仍有很多需要决定的地方。
一个有问题的领域是处理 kv 形式 - 减速器在那里做出了一些选择,这些选择对于传感器来说是困难或不方便的,因此需要解决。
这个概念只是并行执行计算的概念。有多种可能的实现方式:
clojure.core.reducers/fold
,它类似于reduce
,除了它只能与关联归约函数一起使用,并且它由一个协议支持,该协议利用各种 Clojure 数据结构的树结构来并行化计算工作。它实际上还不是对转换器友好的,但它对减速器友好,而且似乎支持转换器的版本最终一定会到来。
最近发布的core.async
with 转换器支持导出一个称为pipeline
并行化通道 → 基于通道转换器的转换的函数。