@@ -11,14 +11,12 @@ module Streamly.Internal.Data.MutArray
1111 -- * MutArray.Type module
1212 module Streamly.Internal.Data.MutArray.Type
1313 -- * MutArray module
14− , splitOn
1514 , sliceIndexerFromLen
1615 , slicerFromLen
1716 -- * Unboxed IORef
1817 , module Streamly.Internal.Data.IORef.Unboxed
1918
2019 -- * Deprecated
21− , splitOn
2220 , genSlicesFromLen
2321 , getSlicesFromLen
2422 )
@@ -26,29 +24,15 @@ where
2624
2725#include "inline.hs"
2826
29−import Control.Monad.IO.Class (MonadIO(..))
3027import Streamly.Internal.Data.Unbox (Unbox)
31−import Streamly.Internal.Data.Stream (Stream)
3228import Streamly.Internal.Data.Unfold.Type (Unfold(..))
3329
34−import qualified Streamly.Internal.Data.Stream as D
3530import qualified Streamly.Internal.Data.Unfold as Unfold
3631
3732import Prelude hiding (foldr, length, read, splitAt)
3833import Streamly.Internal.Data.MutArray.Type
3934import Streamly.Internal.Data.IORef.Unboxed
4035
41−-- | Split the array into a stream of slices using a predicate. The element
42−-- matching the predicate is dropped.
43−--
44−-- /Pre-release/
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)
51−
5236-- | Generate a stream of array slice descriptors ((index, len)) of specified
5337-- length from an array, starting from the supplied array index. The last slice
5438-- may be shorter than the requested length depending on the array length.