如何编写Haskell数组策略

时间:2011-07-04 20:21:11

标签: arrays haskell

我想编写一个策略来并行计算数组中的项。旧策略parArr执行此操作(see here)。但是在新的Control.Parallel.Strategies模块中找不到这个。

E.g。 并行列表评估:map f myList `using` parList rdeepseq

我希望能够执行以下操作:amap f myArr `using` parArr rdeepseq,其中amap来自Data.Array.Base,并将函数应用于每个元素(顺序)。

以下似乎有效,但我想知道它是否正确,并想知道我如何定义自己的parArr

这有效:amap ((+1) `using` rpar) $ Array.array (0,4) [(0,10),(1,20),(2,30),(3,40),(4,50)]

2 个答案:

答案 0 :(得分:4)

对于previous question,我为矢量包编写了一个并行评估策略。这应该是一个很好的起点。您可以在see the code on hackage包中vector-strategies

我没有时间给出完整的答案 - 也许我稍后会对此进行编辑。随意提出额外的问题和方向。

答案 1 :(得分:2)

除了给出的所有好建议之外:没有parArr的原因仅仅是它已经被更一般的parTraversable所取代。只是说:

amap f myArr `using` parTraversable rdeepseq

这应该会给你你要求的行为。