功能通用于Foldable和Data.Vector.Unboxed

Grz*_*ała 9 haskell vector

Data.Vector.Unboxed不是一个实例Foldable.编写一个适用于实例Foldable以及未装箱矢量的函数的最佳方法是什么?例如,此版本的sum工作包含列表和盒装矢量,但未取消装箱:

sum :: (Foldable t, Num a) => t a -> a
sum = Foldable.foldl' (+) 0
Run Code Online (Sandbox Code Playgroud)

Sjo*_*her 11

这听起来像是单行程可以为你做的事情.Fe它已经包含一个sum变体:

osum :: (MonoFoldable mono, Num (Element mono)) => mono -> Element mono
osum = ofoldl' (+) 0
Run Code Online (Sandbox Code Playgroud)