我想編寫一個策略來並行地評估數組中的項目。舊的策略有parArr
這樣做(see here)。但是在新的Control.Parallel.Strategies模塊中沒有找到。如何編寫Haskell數組策略
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)]
@ dave4420:感謝您的編輯:-) – vis
您確定這有效嗎?因爲'(+1)'使用'rpar''很奇怪。它會並行評估'(+1)'表達式,這沒有什麼意義,因爲'(+1)'是一個lambda表達式,因此它已經在WHNF中,並且沒有什麼可以評估的。你可能意思是''amap((''使用'rpar)。(+ 1))'',不是? – Rotsor
爲什麼不使用'repa'或'vector',它們已經具有並行策略,並且通常更靈活? –