diff --git a/fixed-vector/ChangeLog.md b/fixed-vector/ChangeLog.md index afe59f6..0196a7d 100644 --- a/fixed-vector/ChangeLog.md +++ b/fixed-vector/ChangeLog.md @@ -5,7 +5,7 @@ data types defined in library now has `Prim` instance. * `Foldable1` could be derived using `ViaFixed`. All types for which it could be defined now has it. For GHC<9.6 `foldable1-classes-compat` is used. - +* `ifoldl'` added. 2.0.0.0 [2025.07.10] ------------------ diff --git a/fixed-vector/Data/Vector/Fixed.hs b/fixed-vector/Data/Vector/Fixed.hs index de57f0e..f36023b 100644 --- a/fixed-vector/Data/Vector/Fixed.hs +++ b/fixed-vector/Data/Vector/Fixed.hs @@ -129,6 +129,7 @@ module Data.Vector.Fixed ( , fold , foldMap , ifoldl + , ifoldl' , ifoldr , foldM , ifoldM diff --git a/fixed-vector/Data/Vector/Fixed/Internal.hs b/fixed-vector/Data/Vector/Fixed/Internal.hs index c25e5fd..19e827b 100644 --- a/fixed-vector/Data/Vector/Fixed/Internal.hs +++ b/fixed-vector/Data/Vector/Fixed/Internal.hs @@ -273,9 +273,7 @@ elementTy :: forall k v a f proxy. (Vector v a, Index (Peano k) (Dim v), Functor => proxy k -> (a -> f a) -> (v a -> f (v a)) {-# INLINE elementTy #-} elementTy _ f v - = fmap vector - $ inspect (C.cvec v) - (C.lensF (proxy# @(Peano k)) f construct) + = inspect v (C.lensF (proxy# @(Peano k)) f construct) -- | Left fold over vector foldl :: Vector v a => (b -> a -> b) -> b -> v a -> b @@ -607,7 +605,7 @@ izipWithM f v u = fmap vector -- | Zip two vector elementwise using monadic function and discard -- result izipWithM_ - :: (Vector v a, Vector v b, Vector v c, Applicative f, Vector v (f c)) + :: (Vector v a, Vector v b, Vector v c, Applicative f) => (Int -> a -> b -> f c) -> v a -> v b -> f () {-# INLINE izipWithM_ #-} izipWithM_ f xs ys = C.izipWithM_ f (C.cvec xs) (C.cvec ys)