@@ -11,14 +11,12 @@ module Streamly.Internal.Data.MutArray
11 -- * MutArray.Type module
11 -- * MutArray.Type module
12 module Streamly.Internal.Data.MutArray.Type
12 module Streamly.Internal.Data.MutArray.Type
13 -- * MutArray module
13 -- * MutArray module
15 , sliceIndexerFromLen
14 , sliceIndexerFromLen
16 , slicerFromLen
15 , slicerFromLen
17 -- * Unboxed IORef
16 -- * Unboxed IORef
18 , module Streamly.Internal.Data.IORef.Unboxed
17 , module Streamly.Internal.Data.IORef.Unboxed
20 -- * Deprecated
19 -- * Deprecated
22 , genSlicesFromLen
20 , genSlicesFromLen
23 , getSlicesFromLen
21 , getSlicesFromLen
@@ -26,29 +24,15 @@ where
27#include "inline.hs"
25#include "inline.hs"
29−import Control.Monad.IO.Class (MonadIO(..))
30import Streamly.Internal.Data.Unbox (Unbox)
27import Streamly.Internal.Data.Unbox (Unbox)
31−import Streamly.Internal.Data.Stream (Stream)
32import Streamly.Internal.Data.Unfold.Type (Unfold(..))
28import Streamly.Internal.Data.Unfold.Type (Unfold(..))
34−import qualified Streamly.Internal.Data.Stream as D
35import qualified Streamly.Internal.Data.Unfold as Unfold
30import qualified Streamly.Internal.Data.Unfold as Unfold
37import Prelude hiding (foldr, length, read, splitAt)
32import Prelude hiding (foldr, length, read, splitAt)
38import Streamly.Internal.Data.MutArray.Type
33import Streamly.Internal.Data.MutArray.Type
39import Streamly.Internal.Data.IORef.Unboxed
34import Streamly.Internal.Data.IORef.Unboxed
41−-- | Split the array into a stream of slices using a predicate. The element
42−-- matching the predicate is dropped.
45−{-# INLINE splitOn #-}
46−splitOn :: (MonadIO m, Unbox a) =>
47− (a -> Bool) -> MutArray a -> Stream m (MutArray a)
48−splitOn predicate arr =
49− fmap (\(i, len) -> getSliceUnsafe i len arr)
50− $ D.sliceOnSuffix predicate (read arr)
52-- | Generate a stream of array slice descriptors ((index, len)) of specified
36-- | Generate a stream of array slice descriptors ((index, len)) of specified
53-- length from an array, starting from the supplied array index. The last slice
37-- length from an array, starting from the supplied array index. The last slice
54-- may be shorter than the requested length depending on the array length.
38-- may be shorter than the requested length depending on the array length.