一方面,在Haskell中Vector a似乎是用作数字数组的首选类型.甚至有一个(不完整的)矢量教程.
另一方面,Control.Parallel.Strategies主要是根据而定义的Traversable.矢量库不提供这些实例.
最小的完整定义也Traversable t应该定义Foldable和
traverse :: Applicative f => (a -> f b) -> t a -> f (t b)
sequenceA :: Applicative f => t (f a) -> f (t a)
Run Code Online (Sandbox Code Playgroud)
我看不出如何sequenceA定义Data.Vector.Unboxed.Vector.那么,使用未装箱的向量编写并行代码的最佳方法是什么?定义一些新的临时策略,如evalVector或使用par和pseq明确或使用普通Data.Array而不是向量?
PS Plain Array可并行化,没有问题:https://gist.github.com/701888