@@ -58,7 +58,7 @@ import Control.Monad.IO.Class (MonadIO(..))
58import Data.Semigroup (Semigroup(..))
58import Data.Semigroup (Semigroup(..))
60import Data.Word (Word8)
60import Data.Word (Word8)
61−import Streamly.Internal.Data.Unboxed (Storable, peekWith, sizeOf)
61+import Streamly.Internal.Data.Unboxed (Storable, Unboxed, peekWith, sizeOf)
62import Fusion.Plugin.Types (Fuse(..))
62import Fusion.Plugin.Types (Fuse(..))
63import GHC.Exts (SpecConstrAnnotation(..))
63import GHC.Exts (SpecConstrAnnotation(..))
64import GHC.Types (SPEC(..))
64import GHC.Types (SPEC(..))
@@ -105,7 +105,7 @@ import qualified Streamly.Internal.Data.Stream.Type as Stream
106-- /Pre-release/
106-- /Pre-release/
107{-# INLINE arraysOf #-}
107{-# INLINE arraysOf #-}
108−arraysOf :: (IsStream t, MonadIO m, Storable a)
108+arraysOf :: (IsStream t, MonadIO m, Unboxed a)
109 => Int -> t m a -> t m (Array a)
109 => Int -> t m a -> t m (Array a)
110arraysOf n str = fromStreamD $ A.arraysOf n (toStreamD str)
110arraysOf n str = fromStreamD $ A.arraysOf n (toStreamD str)
@@ -125,7 +125,7 @@ arraysOf n str = fromStreamD $ A.arraysOf n (toStreamD str)
126-- @since 0.7.0
126-- @since 0.7.0
127{-# INLINE concat #-}
127{-# INLINE concat #-}
128−concat :: (IsStream t, Monad m, Storable a) => t m (Array a) -> t m a
128+concat :: (IsStream t, Monad m, Unboxed a) => t m (Array a) -> t m a
129-- concat m = fromStreamD $ A.flattenArrays (toStreamD m)
129-- concat m = fromStreamD $ A.flattenArrays (toStreamD m)
130-- concat m = fromStreamD $ D.concatMap A.toStreamD (toStreamD m)
130-- concat m = fromStreamD $ D.concatMap A.toStreamD (toStreamD m)
131concat m = fromStreamD $ D.unfoldMany A.read (toStreamD m)
131concat m = fromStreamD $ D.unfoldMany A.read (toStreamD m)
@@ -137,7 +137,7 @@ concat m = fromStreamD $ D.unfoldMany A.read (toStreamD m)
138-- @since 0.7.0
138-- @since 0.7.0
139{-# INLINE concatRev #-}
139{-# INLINE concatRev #-}
140−concatRev :: (IsStream t, Monad m, Storable a) => t m (Array a) -> t m a
140+concatRev :: (IsStream t, Monad m, Unboxed a) => t m (Array a) -> t m a
141-- concatRev m = fromStreamD $ A.flattenArraysRev (toStreamD m)
141-- concatRev m = fromStreamD $ A.flattenArraysRev (toStreamD m)
142concatRev m = fromStreamD $ D.unfoldMany A.readRev (toStreamD m)
142concatRev m = fromStreamD $ D.unfoldMany A.readRev (toStreamD m)
@@ -150,11 +150,11 @@ concatRev m = fromStreamD $ D.unfoldMany A.readRev (toStreamD m)
151-- /Pre-release/
151-- /Pre-release/
152{-# INLINE interpose #-}
152{-# INLINE interpose #-}
153−interpose :: (Monad m, IsStream t, Storable a) => a -> t m (Array a) -> t m a
153+interpose :: (Monad m, IsStream t, Unboxed a) => a -> t m (Array a) -> t m a
154interpose x = S.interpose x A.read
154interpose x = S.interpose x A.read
156{-# INLINE intercalateSuffix #-}
156{-# INLINE intercalateSuffix #-}
157−intercalateSuffix :: (Monad m, IsStream t, Storable a)
157+intercalateSuffix :: (Monad m, IsStream t, Unboxed a)
158 => Array a -> t m (Array a) -> t m a
158 => Array a -> t m (Array a) -> t m a
159intercalateSuffix = S.intercalateSuffix A.read
159intercalateSuffix = S.intercalateSuffix A.read
@@ -163,7 +163,7 @@ intercalateSuffix = S.intercalateSuffix A.read
164-- @since 0.7.0
164-- @since 0.7.0
165{-# INLINE interposeSuffix #-}
165{-# INLINE interposeSuffix #-}
166−interposeSuffix :: (Monad m, IsStream t, Storable a)
166+interposeSuffix :: (Monad m, IsStream t, Unboxed a)
167 => a -> t m (Array a) -> t m a
167 => a -> t m (Array a) -> t m a
168-- interposeSuffix x = fromStreamD . A.unlines x . toStreamD
168-- interposeSuffix x = fromStreamD . A.unlines x . toStreamD
169interposeSuffix x = S.interposeSuffix x A.read
169interposeSuffix x = S.interposeSuffix x A.read
@@ -174,7 +174,7 @@ data FlattenState s a =
175-- XXX Remove monadIO constraint
175-- XXX Remove monadIO constraint
176{-# INLINE_NORMAL unlines #-}
176{-# INLINE_NORMAL unlines #-}
177−unlines :: forall m a. (MonadIO m, Storable a)
177+unlines :: forall m a. (MonadIO m, Unboxed a)
178 => a -> D.Stream m (Array a) -> D.Stream m a
178 => a -> D.Stream m (Array a) -> D.Stream m a
179unlines sep (D.Stream step state) = D.Stream step' (OuterLoop state)
179unlines sep (D.Stream step state) = D.Stream step' (OuterLoop state)
@@ -202,7 +202,7 @@ unlines sep (D.Stream step state) = D.Stream step' (OuterLoop state)
202-- module Streamly.Internal.Data.Array.Stream.Mut.Foreign
202-- module Streamly.Internal.Data.Array.Stream.Mut.Foreign
204{-# INLINE_NORMAL packArraysChunksOf #-}
204{-# INLINE_NORMAL packArraysChunksOf #-}
205−packArraysChunksOf :: (MonadIO m, Storable a)
205+packArraysChunksOf :: (MonadIO m, Unboxed a)
206 => Int -> D.Stream m (Array a) -> D.Stream m (Array a)
206 => Int -> D.Stream m (Array a) -> D.Stream m (Array a)
207packArraysChunksOf n str =
207packArraysChunksOf n str =
208 D.map A.unsafeFreeze $ AS.packArraysChunksOf n $ D.map A.unsafeThaw str
208 D.map A.unsafeFreeze $ AS.packArraysChunksOf n $ D.map A.unsafeThaw str
@@ -210,7 +210,7 @@ packArraysChunksOf n str =
210-- XXX instead of writing two different versions of this operation, we should
210-- XXX instead of writing two different versions of this operation, we should
211-- write it as a pipe.
211-- write it as a pipe.
212{-# INLINE_NORMAL lpackArraysChunksOf #-}
212{-# INLINE_NORMAL lpackArraysChunksOf #-}
213−lpackArraysChunksOf :: (MonadIO m, Storable a)
213+lpackArraysChunksOf :: (MonadIO m, Unboxed a)
214 => Int -> Fold m (Array a) () -> Fold m (Array a) ()
214 => Int -> Fold m (Array a) () -> Fold m (Array a) ()
215lpackArraysChunksOf n fld =
215lpackArraysChunksOf n fld =
216 FL.lmap A.unsafeThaw $ AS.lpackArraysChunksOf n (FL.lmap A.unsafeFreeze fld)
216 FL.lmap A.unsafeThaw $ AS.lpackArraysChunksOf n (FL.lmap A.unsafeFreeze fld)
@@ -220,7 +220,7 @@ lpackArraysChunksOf n fld =
221-- @since 0.7.0
221-- @since 0.7.0
222{-# INLINE compact #-}
222{-# INLINE compact #-}
223−compact :: (MonadIO m, Storable a)
223+compact :: (MonadIO m, Unboxed a)
224 => Int -> SerialT m (Array a) -> SerialT m (Array a)
224 => Int -> SerialT m (Array a) -> SerialT m (Array a)
225compact n xs = fromStreamD $ packArraysChunksOf n (toStreamD xs)
225compact n xs = fromStreamD $ packArraysChunksOf n (toStreamD xs)
@@ -317,7 +317,7 @@ splitOnSuffix byte s =
317-- to the number of times it can be called on the same stream.
317-- to the number of times it can be called on the same stream.
319{-# INLINE_NORMAL foldBreakD #-}
319{-# INLINE_NORMAL foldBreakD #-}
320−foldBreakD :: forall m a b. (MonadIO m, Storable a) =>
320+foldBreakD :: forall m a b. (MonadIO m, Unboxed a) =>
321 Fold m a b -> D.Stream m (Array a) -> m (b, D.Stream m (Array a))
321 Fold m a b -> D.Stream m (Array a) -> m (b, D.Stream m (Array a))
322foldBreakD (Fold fstep initial extract) stream@(D.Stream step state) = do
322foldBreakD (Fold fstep initial extract) stream@(D.Stream step state) = do
323 res <- initial
323 res <- initial
@@ -353,7 +353,7 @@ foldBreakD (Fold fstep initial extract) stream@(D.Stream step state) = do
353 FL.Partial fs1 -> goArray SPEC st fp next fs1
353 FL.Partial fs1 -> goArray SPEC st fp next fs1
355{-# INLINE_NORMAL foldBreakK #-}
355{-# INLINE_NORMAL foldBreakK #-}
356−foldBreakK :: forall m a b. (MonadIO m, Storable a) =>
356+foldBreakK :: forall m a b. (MonadIO m, Unboxed a) =>
357 Fold m a b -> K.Stream m (Array a) -> m (b, K.Stream m (Array a))
357 Fold m a b -> K.Stream m (Array a) -> m (b, K.Stream m (Array a))
358foldBreakK (Fold fstep initial extract) stream = do
358foldBreakK (Fold fstep initial extract) stream = do
359 res <- initial
359 res <- initial
@@ -394,7 +394,7 @@ foldBreakK (Fold fstep initial extract) stream = do
395{-# INLINE_NORMAL foldBreak #-}
395{-# INLINE_NORMAL foldBreak #-}
396foldBreak ::
396foldBreak ::
397− (MonadIO m, Storable a)
397+ (MonadIO m, Unboxed a)
398 => FL.Fold m a b
398 => FL.Fold m a b
399 -> SerialT m (A.Array a)
399 -> SerialT m (A.Array a)
400 -> m (b, SerialT m (A.Array a))
400 -> m (b, SerialT m (A.Array a))
@@ -413,7 +413,7 @@ foldBreak f =
414-- When we have to take an array partially, take the last part of the array.
414-- When we have to take an array partially, take the last part of the array.
415{-# INLINE takeArrayListRev #-}
415{-# INLINE takeArrayListRev #-}
416−takeArrayListRev :: forall a. Storable a => Int -> [Array a] -> [Array a]
416+takeArrayListRev :: forall a. Unboxed a => Int -> [Array a] -> [Array a]
417takeArrayListRev = go
417takeArrayListRev = go
@@ -464,14 +464,14 @@ splitAtArrayListRev n ls
464-- CAUTION! length must more than equal to lengths of all the arrays in the
464-- CAUTION! length must more than equal to lengths of all the arrays in the
465-- stream.
465-- stream.
466{-# INLINE spliceArraysLenUnsafe #-}
466{-# INLINE spliceArraysLenUnsafe #-}
467−spliceArraysLenUnsafe :: (MonadIO m, Storable a)
467+spliceArraysLenUnsafe :: (MonadIO m, Unboxed a)
468 => Int -> SerialT m (MA.Array a) -> m (MA.Array a)
468 => Int -> SerialT m (MA.Array a) -> m (MA.Array a)
469spliceArraysLenUnsafe len buffered = do
469spliceArraysLenUnsafe len buffered = do
470 arr <- liftIO $ MA.newArray len
470 arr <- liftIO $ MA.newArray len
471 S.foldlM' MA.spliceUnsafe (return arr) buffered
471 S.foldlM' MA.spliceUnsafe (return arr) buffered
473{-# INLINE _spliceArrays #-}
473{-# INLINE _spliceArrays #-}
474−_spliceArrays :: (MonadIO m, Storable a)
474+_spliceArrays :: (MonadIO m, Unboxed a)
475 => SerialT m (Array a) -> m (Array a)
475 => SerialT m (Array a) -> m (Array a)
476_spliceArrays s = do
476_spliceArrays s = do
477 buffered <- S.foldr S.cons S.nil s
477 buffered <- S.foldr S.cons S.nil s
@@ -485,7 +485,7 @@ _spliceArrays s = do
485 writeArr dst arr = MA.spliceUnsafe dst (A.unsafeThaw arr)
485 writeArr dst arr = MA.spliceUnsafe dst (A.unsafeThaw arr)
487{-# INLINE _spliceArraysBuffered #-}
487{-# INLINE _spliceArraysBuffered #-}
488−_spliceArraysBuffered :: (MonadIO m, Storable a)
488+_spliceArraysBuffered :: (MonadIO m, Unboxed a)
489 => SerialT m (Array a) -> m (Array a)
489 => SerialT m (Array a) -> m (Array a)
490_spliceArraysBuffered s = do
490_spliceArraysBuffered s = do
491 buffered <- S.foldr S.cons S.nil s
491 buffered <- S.foldr S.cons S.nil s
@@ -493,7 +493,7 @@ _spliceArraysBuffered s = do
493 A.unsafeFreeze <$> spliceArraysLenUnsafe len (S.map A.unsafeThaw s)
493 A.unsafeFreeze <$> spliceArraysLenUnsafe len (S.map A.unsafeThaw s)
495{-# INLINE spliceArraysRealloced #-}
495{-# INLINE spliceArraysRealloced #-}
496−spliceArraysRealloced :: forall m a. (MonadIO m, Storable a)
496+spliceArraysRealloced :: forall m a. (MonadIO m, Unboxed a)
497 => SerialT m (Array a) -> m (Array a)
497 => SerialT m (Array a) -> m (Array a)
498spliceArraysRealloced s = do
498spliceArraysRealloced s = do
499 let n = allocBytesToElemCount (undefined :: a) (4 * 1024)
499 let n = allocBytesToElemCount (undefined :: a) (4 * 1024)
@@ -509,7 +509,7 @@ spliceArraysRealloced s = do
510-- @since 0.7.0
510-- @since 0.7.0
511{-# INLINE toArray #-}
511{-# INLINE toArray #-}
512−toArray :: (MonadIO m, Storable a) => SerialT m (Array a) -> m (Array a)
512+toArray :: (MonadIO m, Unboxed a) => SerialT m (Array a) -> m (Array a)
513toArray = spliceArraysRealloced
513toArray = spliceArraysRealloced
514-- spliceArrays = _spliceArraysBuffered
514-- spliceArrays = _spliceArraysBuffered
@@ -520,7 +520,7 @@ toArray = spliceArraysRealloced
522{-# INLINE toArraysInRange #-}
522{-# INLINE toArraysInRange #-}
523−toArraysInRange :: (IsStream t, MonadIO m, Storable a)
523+toArraysInRange :: (IsStream t, MonadIO m, Unboxed a)
524 => Int -> Int -> Fold m (Array a) b -> Fold m a b
524 => Int -> Int -> Fold m (Array a) b -> Fold m a b
525toArraysInRange low high (Fold step initial extract) =
525toArraysInRange low high (Fold step initial extract) =
@@ -528,7 +528,7 @@ toArraysInRange low high (Fold step initial extract) =
529-- | Fold the input to a pure buffered stream (List) of arrays.
529-- | Fold the input to a pure buffered stream (List) of arrays.
530{-# INLINE _toArraysOf #-}
530{-# INLINE _toArraysOf #-}
531−_toArraysOf :: (MonadIO m, Storable a)
531+_toArraysOf :: (MonadIO m, Unboxed a)
532 => Int -> Fold m a (SerialT Identity (Array a))
532 => Int -> Fold m a (SerialT Identity (Array a))
533_toArraysOf n = FL.chunksOf n (A.writeNF n) FL.toStream
533_toArraysOf n = FL.chunksOf n (A.writeNF n) FL.toStream
@@ -549,7 +549,7 @@ newtype List a = List {getList :: [a]}
549-- to the number of times it can be called on the same stream.
549-- to the number of times it can be called on the same stream.
550{-# INLINE_NORMAL parseBreakD #-}
550{-# INLINE_NORMAL parseBreakD #-}
551parseBreakD ::
551parseBreakD ::
552− forall m a b. (MonadIO m, MonadThrow m, Storable a)
552+ forall m a b. (MonadIO m, MonadThrow m, Unboxed a)
553 => PRD.Parser m a b
553 => PRD.Parser m a b
554 -> D.Stream m (Array.Array a)
554 -> D.Stream m (Array.Array a)
555 -> m (b, D.Stream m (Array.Array a))
555 -> m (b, D.Stream m (Array.Array a))
@@ -629,7 +629,7 @@ parseBreakD
630{-# INLINE_NORMAL parseBreakK #-}
630{-# INLINE_NORMAL parseBreakK #-}
631parseBreakK ::
631parseBreakK ::
632− forall m a b. (MonadIO m, MonadThrow m, Storable a)
632+ forall m a b. (MonadIO m, MonadThrow m, Unboxed a)
633 => PRD.Parser m a b
633 => PRD.Parser m a b
634 -> K.Stream m (Array.Array a)
634 -> K.Stream m (Array.Array a)
635 -> m (b, K.Stream m (Array.Array a))
635 -> m (b, K.Stream m (Array.Array a))
@@ -708,7 +708,7 @@ parseBreakK (PRD.Parser pstep initial extract) stream = do
709{-# INLINE_NORMAL parseBreak #-}
709{-# INLINE_NORMAL parseBreak #-}
710parseBreak ::
710parseBreak ::
711− (MonadIO m, MonadThrow m, Storable a)
711+ (MonadIO m, MonadThrow m, Unboxed a)
712 => PR.Parser m a b
712 => PR.Parser m a b
713 -> SerialT m (A.Array a)
713 -> SerialT m (A.Array a)
714 -> m (b, SerialT m (A.Array a))
714 -> m (b, SerialT m (A.Array a))
@@ -734,7 +734,7 @@ parseBreak p =
735{-# INLINE_NORMAL runArrayParserDBreak #-}
735{-# INLINE_NORMAL runArrayParserDBreak #-}
736runArrayParserDBreak ::
736runArrayParserDBreak ::
737− forall m a b. (MonadIO m, MonadThrow m, Storable a)
737+ forall m a b. (MonadIO m, MonadThrow m, Unboxed a)
738 => PRD.Parser m (Array a) b
738 => PRD.Parser m (Array a) b
739 -> D.Stream m (Array.Array a)
739 -> D.Stream m (Array.Array a)
740 -> m (b, D.Stream m (Array.Array a))
740 -> m (b, D.Stream m (Array.Array a))
@@ -806,7 +806,7 @@ runArrayParserDBreak
807{-# INLINE parseArr #-}
807{-# INLINE parseArr #-}
808parseArr ::
808parseArr ::
809− (MonadIO m, MonadThrow m, Storable a)
809+ (MonadIO m, MonadThrow m, Unboxed a)
810 => ASF.Parser m a b
810 => ASF.Parser m a b
811 -> SerialT m (A.Array a)
811 -> SerialT m (A.Array a)
812 -> m (b, SerialT m (A.Array a))
812 -> m (b, SerialT m (A.Array a))
@@ -818,7 +818,7 @@ parseArr p s = fmap fromStreamD <$> parseBreakD p (toStreamD s)
818-- /Pre-release/
818-- /Pre-release/
820{-# INLINE runArrayFold #-}
820{-# INLINE runArrayFold #-}
821−runArrayFold :: (MonadIO m, MonadThrow m, Storable a) =>
821+runArrayFold :: (MonadIO m, MonadThrow m, Unboxed a) =>
822 ArrayFold m a b -> SerialT m (A.Array a) -> m b
822 ArrayFold m a b -> SerialT m (A.Array a) -> m b
823runArrayFold (ArrayFold p) s = fst <$> runArrayParserDBreak p (toStreamD s)
823runArrayFold (ArrayFold p) s = fst <$> runArrayParserDBreak p (toStreamD s)
@@ -827,7 +827,7 @@ runArrayFold (ArrayFold p) s = fst <$> runArrayParserDBreak p (toStreamD s)
827-- /Pre-release/
827-- /Pre-release/
829{-# INLINE runArrayFoldBreak #-}
829{-# INLINE runArrayFoldBreak #-}
830−runArrayFoldBreak :: (MonadIO m, MonadThrow m, Storable a) =>
830+runArrayFoldBreak :: (MonadIO m, MonadThrow m, Unboxed a) =>
831 ArrayFold m a b -> SerialT m (A.Array a) -> m (b, SerialT m (A.Array a))
831 ArrayFold m a b -> SerialT m (A.Array a) -> m (b, SerialT m (A.Array a))
832runArrayFoldBreak (ArrayFold p) s =
832runArrayFoldBreak (ArrayFold p) s =
833 second fromStreamD <$> runArrayParserDBreak p (toStreamD s)
833 second fromStreamD <$> runArrayParserDBreak p (toStreamD s)
@@ -842,7 +842,7 @@ data ParseChunksState x inpBuf st pst =
843{-# INLINE_NORMAL runArrayFoldManyD #-}
843{-# INLINE_NORMAL runArrayFoldManyD #-}
844runArrayFoldManyD
844runArrayFoldManyD
845− :: (MonadThrow m, Storable a)
845+ :: (MonadThrow m, Unboxed a)
846 => ArrayFold m a b
846 => ArrayFold m a b
847 -> D.Stream m (Array a)
847 -> D.Stream m (Array a)
848 -> D.Stream m b
848 -> D.Stream m b
@@ -970,7 +970,7 @@ runArrayFoldManyD
970-- /Pre-release/
970-- /Pre-release/
971{-# INLINE runArrayFoldMany #-}
971{-# INLINE runArrayFoldMany #-}
972runArrayFoldMany
972runArrayFoldMany
973− :: (IsStream t, MonadThrow m, Storable a)
973+ :: (IsStream t, MonadThrow m, Unboxed a)
974 => ArrayFold m a b
974 => ArrayFold m a b
975 -> t m (Array a)
975 -> t m (Array a)