/ FoldableとData.Vector.Unboxedの上でジェネリック/関数ジェネリック - haskell、ベクトル

FoldableおよびData.Vector.Unboxed - haskell、vector上の汎用関数

Data.Vector.Unboxed のインスタンスではありません Foldable。のインスタンスで機能する関数を書くための最良の方法は何ですか Foldable ボックス化されていないベクトルと同様に?例えばこのバージョン sum リストとボックス化されたベクトルでは動作しますが、ボックス化されていないとは動作しません。

sum :: (Foldable t, Num a) => t a -> a
sum = Foldable.foldl" (+) 0

回答:

回答№1の11

これは何かのように聞こえます モノトラバース あなたのためにすることができます。 F.e.それはすでに含まれています sum バリアント:

osum :: (MonoFoldable mono, Num (Element mono)) => mono -> Element mono
osum = ofoldl" (+) 0