Data.Vector.Unboxed
nie jest instancją Foldable
. Jaki jest najlepszy sposób napisania funkcji działającej na instancjach Foldable
a także na nieskrytych wektorach? Na przykład ta wersja sum
działa z listami i wektorami w ramkach, ale nie jest rozpakowywany:
sum :: (Foldable t, Num a) => t a -> a
sum = Foldable.foldl" (+) 0
Odpowiedzi:
11 dla odpowiedzi nr 1To brzmi jak coś mono-traversable może zrobić dla ciebie. F.e. zawiera już sum
wariant:
osum :: (MonoFoldable mono, Num (Element mono)) => mono -> Element mono
osum = ofoldl" (+) 0