我想在换能器中使用pmap,如果我用常规映射编写代码,它可以正常工作。然而,如果我使用pmap,我就会得到一个异常。是否有可能在clojure中实现这一目标,或者我是否做错了什么?如果这是不可能的,有人能指出为什么会这样吗?只是出于好奇。下面粘贴的是我的代码和异常的开始。
(def get-in-map (comp
(pmap read-csv)
))
clojure.lang.Compiler$CompilerException: clojure.lang.ArityException: Wrong number of args (1) passed to: core/pmap, compiling:发布于 2017-09-06 16:23:55
发布于 2017-09-06 16:13:05
map被记录为“在不提供集合时返回转换器”(文档),而pmap (文档)则不是这样。
您可以看到map 这里的单参数版本的实现。正如您所看到的这里,pmap没有一元版本,所以这就是您获得ArityException的原因。
这就引出了一个问题:为什么没有一元pmap?因为换能器可以以更一般的方式提供这种并行性。当您使用转换器时,不需要在每个操作中实现并行性( map的并行版本等等)。看看clojure.core.reducers/fold:它“使用一种(潜在的并行)减少合并策略减少了一次校对。”示例(来自David Nolen):
(clojure.core.reducers/fold +
((map inc) +)
(vec (range 1000000)))https://stackoverflow.com/questions/46079712
复制相似问题