@@ -78,6 +78,7 @@ module Data.Vector.Generic.Mutable (
7878 PrimMonad , PrimState , RealWorld
7979) where
8080
81+ import Control.Monad ((<=<) )
8182import Data.Vector.Generic.Mutable.Base
8283import qualified Data.Vector.Generic.Base as V
8384
@@ -1221,34 +1222,31 @@ partitionWithUnknown f s
12211222-- @since NEXT_VERSION
12221223mapInPlace :: (PrimMonad m , MVector v a ) => (a -> a ) -> v (PrimState m ) a -> m ()
12231224{-# INLINE mapInPlace #-}
1224- mapInPlace f v
1225- = stToPrim
1226- $ forI_ v $ \ i -> unsafeWrite v i . f =<< unsafeRead v i
1225+ mapInPlace f = imapInPlace (\ _ -> f)
12271226
12281227-- | Modify vector in place by applying function to each element and its index.
12291228--
12301229-- @since NEXT_VERSION
12311230imapInPlace :: (PrimMonad m , MVector v a ) => (Int -> a -> a ) -> v (PrimState m ) a -> m ()
12321231{-# INLINE imapInPlace #-}
12331232imapInPlace f v
1234- = stToPrim
1235- $ forI_ v $ \ i -> unsafeWrite v i . f i =<< unsafeRead v i
1233+ = stToPrim $ iforM_ v $ \ i -> unsafeWrite v i . f i
12361234
12371235-- | Modify vector in place by applying monadic function to each element in order.
12381236--
12391237-- @since NEXT_VERSION
12401238mapInPlaceM :: (PrimMonad m , MVector v a ) => (a -> m a ) -> v (PrimState m ) a -> m ()
12411239{-# INLINE mapInPlaceM #-}
1242- mapInPlaceM f v
1243- = forI_ v $ \ i -> unsafeWrite v i =<< f =<< unsafeRead v i
1240+ mapInPlaceM f
1241+ = imapInPlaceM ( \ _ -> f)
12441242
12451243-- | Modify vector in place by applying monadic function to each element and its index in order.
12461244--
12471245-- @since NEXT_VERSION
12481246imapInPlaceM :: (PrimMonad m , MVector v a ) => (Int -> a -> m a ) -> v (PrimState m ) a -> m ()
12491247{-# INLINE imapInPlaceM #-}
12501248imapInPlaceM f v
1251- = forI_ v $ \ i -> unsafeWrite v i =<< f i =<< unsafeRead v i
1249+ = iforM_ v $ \ i -> unsafeWrite v i <=< f i
12521250
12531251
12541252-- | Compute the (lexicographically) next permutation of the given vector in-place.
0 commit comments