@@ -12,11 +12,16 @@ module Streamly.Internal.Data.MutArray
12 module Streamly.Internal.Data.MutArray.Type
12 module Streamly.Internal.Data.MutArray.Type
13 -- * MutArray module
13 -- * MutArray module
15− , genSlicesFromLen
15+ , sliceIndexerFromLen
16− , getSlicesFromLen
16+ , slicerFromLen
17 , fromStream
17 , fromStream
18 -- * Unboxed IORef
18 -- * Unboxed IORef
19 , module Streamly.Internal.Data.IORef.Unboxed
19 , module Streamly.Internal.Data.IORef.Unboxed
@@ -50,31 +55,45 @@ splitOn predicate arr =
50-- may be shorter than the requested length depending on the array length.
55-- may be shorter than the requested length depending on the array length.
52-- /Pre-release/
57-- /Pre-release/
53−{-# INLINE genSlicesFromLen #-}
58+{-# INLINE sliceIndexerFromLen #-}
54−genSlicesFromLen :: forall m a. (Monad m, Unbox a)
59+sliceIndexerFromLen :: forall m a. (Monad m, Unbox a)
55 => Int -- ^ from index
60 => Int -- ^ from index
56 -> Int -- ^ length of the slice
61 -> Int -- ^ length of the slice
57 -> Unfold m (MutArray a) (Int, Int)
62 -> Unfold m (MutArray a) (Int, Int)
58−genSlicesFromLen from len =
63+sliceIndexerFromLen from len =
59 let fromThenTo n = (from, from + len, n - 1)
64 let fromThenTo n = (from, from + len, n - 1)
60 mkSlice n i = return (i, min len (n - i))
65 mkSlice n i = return (i, min len (n - i))
61 in Unfold.lmap length
66 in Unfold.lmap length
62 $ Unfold.mapM2 mkSlice
67 $ Unfold.mapM2 mkSlice
63 $ Unfold.lmap fromThenTo Unfold.enumerateFromThenTo
68 $ Unfold.lmap fromThenTo Unfold.enumerateFromThenTo
70+{-# DEPRECATED genSlicesFromLen "Please use sliceIndexerFromLen instead." #-}
71+genSlicesFromLen :: forall m a. (Monad m, Unbox a)
72+ => Int -- ^ from index
73+ -> Int -- ^ length of the slice
74+ -> Unfold m (MutArray a) (Int, Int)
75+genSlicesFromLen = sliceIndexerFromLen
65-- | Generate a stream of slices of specified length from an array, starting
77-- | Generate a stream of slices of specified length from an array, starting
66-- from the supplied array index. The last slice may be shorter than the
78-- from the supplied array index. The last slice may be shorter than the
67-- requested length depending on the array length.
79-- requested length depending on the array length.
69-- /Pre-release/
81-- /Pre-release/
70−{-# INLINE getSlicesFromLen #-}
82+{-# INLINE slicerFromLen #-}
71−getSlicesFromLen :: forall m a. (Monad m, Unbox a)
83+slicerFromLen :: forall m a. (Monad m, Unbox a)
72 => Int -- ^ from index
84 => Int -- ^ from index
73 -> Int -- ^ length of the slice
85 -> Int -- ^ length of the slice
74 -> Unfold m (MutArray a) (MutArray a)
86 -> Unfold m (MutArray a) (MutArray a)
75−getSlicesFromLen from len =
87+slicerFromLen from len =
76 let mkSlice arr (i, n) = return $ getSliceUnsafe i n arr
88 let mkSlice arr (i, n) = return $ getSliceUnsafe i n arr
77− in Unfold.mapM2 mkSlice (genSlicesFromLen from len)
89+ in Unfold.mapM2 mkSlice (sliceIndexerFromLen from len)
91+{-# DEPRECATED getSlicesFromLen "Please use slicerFromLen instead." #-}
92+getSlicesFromLen :: forall m a. (Monad m, Unbox a)
93+ => Int -- ^ from index
94+ -> Int -- ^ length of the slice
95+ -> Unfold m (MutArray a) (MutArray a)
96+getSlicesFromLen = slicerFromLen
79-- | Create an 'Array' from a stream. This is useful when we want to create a
98-- | Create an 'Array' from a stream. This is useful when we want to create a
80-- single array from a stream of unknown size. 'writeN' is at least twice
99-- single array from a stream of unknown size. 'writeN' is at least twice