on master help sign in
Change the argument order of put/modifyIndex
94f3134Harendra Kumar
benchmark/Streamly/Benchmark/Data/Array/Mut.hs+1−1
@@ -266,7 +266,7 @@ o_1_space_serial_marray value ~(array, indices) =
266 , benchIO' "strip (> 0)" (const (return array))
266 , benchIO' "strip (> 0)" (const (return array))
267 $ MArray.strip (> 0)
267 $ MArray.strip (> 0)
268 , benchIO' "modifyIndices (+ 1)" (const (return indices))
268 , benchIO' "modifyIndices (+ 1)" (const (return indices))
269− $ Stream.fold (MArray.modifyIndices (\_idx val -> val + 1) array)
269+ $ Stream.fold (MArray.modifyIndices array (\_idx val -> val + 1))
270 . Stream.unfold Array.reader
270 . Stream.unfold Array.reader
271 ]
271 ]
272
272
core/src/Streamly/Internal/Data/Array/Mut/Type.hs+19−19
@@ -477,8 +477,8 @@ withNewArrayUnsafe count f = do
477-- /Pre-release/
477-- /Pre-release/
478{-# INLINE putIndexUnsafe #-}
478{-# INLINE putIndexUnsafe #-}
479putIndexUnsafe :: forall m a. (MonadIO m, Unbox a)
479putIndexUnsafe :: forall m a. (MonadIO m, Unbox a)
480− => Int -> a -> Array a -> m ()
480+ => Int -> Array a -> a -> m ()
481−putIndexUnsafe i x Array{..} = do
481+putIndexUnsafe i Array{..} x = do
482 let index = INDEX_OF(arrStart, i, a)
482 let index = INDEX_OF(arrStart, i, a)
483 assert (i >= 0 && INDEX_VALID(index, arrEnd, a)) (return ())
483 assert (i >= 0 && INDEX_VALID(index, arrEnd, a)) (return ())
484 liftIO $ pokeWith arrContents index x
484 liftIO $ pokeWith arrContents index x
@@ -490,13 +490,13 @@ invalidIndex label i =
490-- | /O(1)/ Write the given element at the given index in the array.
490-- | /O(1)/ Write the given element at the given index in the array.
491-- Performs in-place mutation of the array.
491-- Performs in-place mutation of the array.
492--
492--
493−-- >>> putIndex arr ix val = Array.modifyIndex ix (const (val, ())) arr
493+-- >>> putIndex ix arr val = Array.modifyIndex ix arr (const (val, ()))
494-- >>> f = Array.putIndices
494-- >>> f = Array.putIndices
495−-- >>> putIndex ix val arr = Stream.fold (f arr) (Stream.fromPure (ix, val))
495+-- >>> putIndex ix arr val = Stream.fold (f arr) (Stream.fromPure (ix, val))
496--
496--
497{-# INLINE putIndex #-}
497{-# INLINE putIndex #-}
498−putIndex :: forall m a. (MonadIO m, Unbox a) => Int -> a -> Array a -> m ()
498+putIndex :: forall m a. (MonadIO m, Unbox a) => Int -> Array a -> a -> m ()
499−putIndex i x Array{..} = do
499+putIndex i Array{..} x = do
500 let index = INDEX_OF(arrStart,i,a)
500 let index = INDEX_OF(arrStart,i,a)
501 if i >= 0 && INDEX_VALID(index,arrEnd,a)
501 if i >= 0 && INDEX_VALID(index,arrEnd,a)
502 then liftIO $ pokeWith arrContents index x
502 then liftIO $ pokeWith arrContents index x
@@ -513,14 +513,14 @@ putIndices arr = FL.foldlM' step (return ())
513
513
514 where
514 where
515
515
516− step () (i, x) = liftIO (putIndex i x arr)
516+ step () (i, x) = liftIO (putIndex i arr x)
517
517
518-- | Modify a given index of an array using a modifier function.
518-- | Modify a given index of an array using a modifier function.
519--
519--
520-- /Pre-release/
520-- /Pre-release/
521modifyIndexUnsafe :: forall m a b. (MonadIO m, Unbox a) =>
521modifyIndexUnsafe :: forall m a b. (MonadIO m, Unbox a) =>
522− Int -> (a -> (a, b)) -> Array a -> m b
522+ Int -> Array a -> (a -> (a, b)) -> m b
523−modifyIndexUnsafe i f Array{..} = liftIO $ do
523+modifyIndexUnsafe i Array{..} f = liftIO $ do
524 let index = INDEX_OF(arrStart,i,a)
524 let index = INDEX_OF(arrStart,i,a)
525 assert (i >= 0 && INDEX_NEXT(index,a) <= arrEnd) (return ())
525 assert (i >= 0 && INDEX_NEXT(index,a) <= arrEnd) (return ())
526 r <- peekWith arrContents index
526 r <- peekWith arrContents index
@@ -532,8 +532,8 @@ modifyIndexUnsafe i f Array{..} = liftIO $ do
532--
532--
533-- /Pre-release/
533-- /Pre-release/
534modifyIndex :: forall m a b. (MonadIO m, Unbox a) =>
534modifyIndex :: forall m a b. (MonadIO m, Unbox a) =>
535− Int -> (a -> (a, b)) -> Array a -> m b
535+ Int -> Array a -> (a -> (a, b)) -> m b
536−modifyIndex i f Array{..} = do
536+modifyIndex i Array{..} f = do
537 let index = INDEX_OF(arrStart,i,a)
537 let index = INDEX_OF(arrStart,i,a)
538 if i >= 0 && INDEX_VALID(index,arrEnd,a)
538 if i >= 0 && INDEX_VALID(index,arrEnd,a)
539 then liftIO $ do
539 then liftIO $ do
@@ -549,8 +549,8 @@ modifyIndex i f Array{..} = do
549-- /Pre-release/
549-- /Pre-release/
550{-# INLINE modifyIndices #-}
550{-# INLINE modifyIndices #-}
551modifyIndices :: forall m a . (MonadIO m, Unbox a)
551modifyIndices :: forall m a . (MonadIO m, Unbox a)
552− => (Int -> a -> a) -> Array a -> Fold m Int ()
552+ => Array a -> (Int -> a -> a) -> Fold m Int ()
553−modifyIndices f arr = FL.foldlM' step initial
553+modifyIndices arr f = FL.foldlM' step initial
554
554
555 where
555 where
556
556
@@ -558,14 +558,14 @@ modifyIndices f arr = FL.foldlM' step initial
558
558
559 step () i =
559 step () i =
560 let f1 x = (f i x, ())
560 let f1 x = (f i x, ())
561− in modifyIndex i f1 arr
561+ in modifyIndex i arr f1
562
562
563-- | Modify each element of an array using the supplied modifier function.
563-- | Modify each element of an array using the supplied modifier function.
564--
564--
565-- /Pre-release/
565-- /Pre-release/
566modify :: forall m a. (MonadIO m, Unbox a)
566modify :: forall m a. (MonadIO m, Unbox a)
567− => (a -> a) -> Array a -> m ()
567+ => Array a -> (a -> a) -> m ()
568−modify f Array{..} = liftIO $
568+modify Array{..} f = liftIO $
569 go arrStart
569 go arrStart
570
570
571 where
571 where
@@ -2341,7 +2341,7 @@ bubble cmp0 arr =
2341 x1 <- getIndexUnsafe i arr
2341 x1 <- getIndexUnsafe i arr
2342 case x `cmp0` x1 of
2342 case x `cmp0` x1 of
2343 LT -> do
2343 LT -> do
2344− putIndexUnsafe (i + 1) x1 arr
2344+ putIndexUnsafe (i + 1) arr x1
2345 go x (i - 1)
2345 go x (i - 1)
2346− _ -> putIndexUnsafe (i + 1) x arr
2346+ _ -> putIndexUnsafe (i + 1) arr x
2347− else putIndexUnsafe (i + 1) x arr
2347+ else putIndexUnsafe (i + 1) arr x
core/src/Streamly/Internal/Data/Fold.hs+1−1
@@ -2462,7 +2462,7 @@ bottomBy cmp n = Fold step initial extract
2462 x1 <- MA.getIndexUnsafe (i - 1) arr
2462 x1 <- MA.getIndexUnsafe (i - 1) arr
2463 case x `cmp` x1 of
2463 case x `cmp` x1 of
2464 LT -> do
2464 LT -> do
2465− MA.putIndexUnsafe (i - 1) x arr
2465+ MA.putIndexUnsafe (i - 1) arr x
2466 MA.bubble cmp arr
2466 MA.bubble cmp arr
2467 return $ Partial (arr, i)
2467 return $ Partial (arr, i)
2468 _ -> return $ Partial (arr, i)
2468 _ -> return $ Partial (arr, i)
core/src/Streamly/Internal/Data/Stream/Container.hs+1−1
@@ -245,7 +245,7 @@ joinOuterGeneric eq s1 s =
245 if a `eq` b1
245 if a `eq` b1
246 then do
246 then do
247 CrossStream (Stream.fromEffect $ put True)
247 CrossStream (Stream.fromEffect $ put True)
248− MA.putIndex i True foundArr
248+ MA.putIndex i foundArr True
249 return (Just a, Just b1)
249 return (Just a, Just b1)
250 else CrossStream Stream.nil
250 else CrossStream Stream.nil
251 Nothing -> return (Just a, Nothing)
251 Nothing -> return (Just a, Nothing)
test/Streamly/Test/Data/Array.hs+1−1
@@ -59,7 +59,7 @@ testLengthFromStream = genericTestFrom (const A.fromStream)
59unsafeWriteIndex :: [Int] -> Int -> Int -> IO Bool
59unsafeWriteIndex :: [Int] -> Int -> Int -> IO Bool
60unsafeWriteIndex xs i x = do
60unsafeWriteIndex xs i x = do
61 arr <- MA.fromList xs
61 arr <- MA.fromList xs
62− MA.putIndexUnsafe i x arr
62+ MA.putIndexUnsafe i arr x
63 x1 <- MA.getIndexUnsafe i arr
63 x1 <- MA.getIndexUnsafe i arr
64 return $ x1 == x
64 return $ x1 == x
65
65