@@ -1,5 +1,5 @@
11-- |
2−-- Module : Streamly.Internal.Data.Array.Fold
2+-- Module : Streamly.Internal.Data.Fold.Chunked
33-- Copyright : (c) 2021 Composewell Technologies
44-- License : BSD-3-Clause
55-- Maintainer : streamly@composewell.com
@@ -19,18 +19,18 @@
1919--
2020-- >>> import qualified Streamly.Data.Fold as Fold
2121-- >>> import qualified Streamly.Internal.Data.Stream.Chunked as ArrayStream
22−-- >>> import qualified Streamly.Internal.Data.Array.Fold as ArrayFold
22+-- >>> import qualified Streamly.Internal.Data.Fold.Chunked as ChunkFold
2323-- >>> import qualified Streamly.Internal.Data.Stream as Stream (arraysOf)
2424-- >>> import qualified Streamly.Data.Stream as Stream
2525--
26−-- >>> f = ArrayFold.fromFold (Fold.take 7 Fold.toList)
26+-- >>> f = ChunkFold.fromFold (Fold.take 7 Fold.toList)
2727-- >>> s = Stream.arraysOf 5 $ Stream.fromList "hello world"
2828-- >>> ArrayStream.runArrayFold f s
2929-- "hello w"
3030--
31−module Streamly.Internal.Data.Array.Fold
31+module Streamly.Internal.Data.Fold.Chunked
3232 (
33− ArrayFold (..)
33+ ChunkFold (..)
3434
3535 -- * Construction
3636 , fromFold
@@ -88,7 +88,7 @@ import Prelude hiding (concatMap, take)
8888--
8989-- /Pre-release/
9090--
91−newtype ArrayFold m a b = ArrayFold (ParserD.Parser (Array a) m b)
91+newtype ChunkFold m a b = ChunkFold (ParserD.Parser (Array a) m b)
9292
9393-------------------------------------------------------------------------------
9494-- Constructing array stream folds from element folds and parsers
@@ -103,9 +103,9 @@ fromFold :: forall m a b. (MonadIO m) =>
103103#else
104104fromFold :: forall m a b. (MonadIO m, Unbox a) =>
105105#endif
106− Fold.Fold m a b -> ArrayFold m a b
106+ Fold.Fold m a b -> ChunkFold m a b
107107fromFold (Fold.Fold fstep finitial fextract) =
108− ArrayFold (ParserD.Parser step initial (fmap (Done 0) . fextract))
108+ ChunkFold (ParserD.Parser step initial (fmap (Done 0) . fextract))
109109
110110 where
111111
@@ -145,9 +145,9 @@ fromParserD :: forall m a b. (MonadIO m) =>
145145#else
146146fromParserD :: forall m a b. (MonadIO m, Unbox a) =>
147147#endif
148− ParserD.Parser a m b -> ArrayFold m a b
148+ ParserD.Parser a m b -> ChunkFold m a b
149149fromParserD (ParserD.Parser step1 initial1 extract1) =
150− ArrayFold (ParserD.Parser step initial1 extract1)
150+ ChunkFold (ParserD.Parser step initial1 extract1)
151151
152152 where
153153
@@ -191,7 +191,7 @@ fromParser :: forall m a b. (MonadThrow m, MonadIO m) =>
191191#else
192192fromParser :: forall m a b. (MonadThrow m, MonadIO m, Unbox a) =>
193193#endif
194− Parser.Parser a m b -> ArrayFold m a b
194+ Parser.Parser a m b -> ChunkFold m a b
195195fromParser = fromParserD . ParserD.fromParserK
196196
197197-- | Adapt an array stream fold.
@@ -199,8 +199,8 @@ fromParser = fromParserD . ParserD.fromParserK
199199-- /Pre-release/
200200{-# INLINE adaptFold #-}
201201adaptFold :: forall m a b. (MonadIO m) =>
202− Fold.Fold m (Array a) b -> ArrayFold m a b
203−adaptFold f = ArrayFold $ ParserD.fromFold f
202+ Fold.Fold m (Array a) b -> ChunkFold m a b
203+adaptFold f = ChunkFold $ ParserD.fromFold f
204204
205205-------------------------------------------------------------------------------
206206-- Functor
@@ -209,16 +209,16 @@ adaptFold f = ArrayFold $ ParserD.fromFold f
209209-- | Maps a function over the result of fold.
210210--
211211-- /Pre-release/
212−instance Functor m => Functor (ArrayFold m a) where
212+instance Functor m => Functor (ChunkFold m a) where
213213 {-# INLINE fmap #-}
214− fmap f (ArrayFold p) = ArrayFold $ fmap f p
214+ fmap f (ChunkFold p) = ChunkFold $ fmap f p
215215
216216-- | Map a monadic function on the output of a fold.
217217--
218218-- /Pre-release/
219219{-# INLINE rmapM #-}
220−rmapM :: Monad m => (b -> m c) -> ArrayFold m a b -> ArrayFold m a c
221−rmapM f (ArrayFold p) = ArrayFold $ ParserD.rmapM f p
220+rmapM :: Monad m => (b -> m c) -> ChunkFold m a b -> ChunkFold m a c
221+rmapM f (ChunkFold p) = ChunkFold $ ParserD.rmapM f p
222222
223223-------------------------------------------------------------------------------
224224-- Sequential applicative
@@ -229,8 +229,8 @@ rmapM f (ArrayFold p) = ArrayFold $ ParserD.rmapM f p
229229-- /Pre-release/
230230--
231231{-# INLINE fromPure #-}
232−fromPure :: Monad m => b -> ArrayFold m a b
233−fromPure = ArrayFold . ParserD.fromPure
232+fromPure :: Monad m => b -> ChunkFold m a b
233+fromPure = ChunkFold . ParserD.fromPure
234234
235235-- | A fold that always yields the result of an effectful action without
236236-- consuming any input.
@@ -238,8 +238,8 @@ fromPure = ArrayFold . ParserD.fromPure
238238-- /Pre-release/
239239--
240240{-# INLINE fromEffect #-}
241−fromEffect :: Monad m => m b -> ArrayFold m a b
242−fromEffect = ArrayFold . ParserD.fromEffect
241+fromEffect :: Monad m => m b -> ChunkFold m a b
242+fromEffect = ChunkFold . ParserD.fromEffect
243243
244244-- | Applies two folds sequentially on the input stream and combines their
245245-- results using the supplied function.
@@ -247,9 +247,9 @@ fromEffect = ArrayFold . ParserD.fromEffect
247247-- /Pre-release/
248248{-# INLINE split_ #-}
249249split_ :: MonadThrow m =>
250− ArrayFold m x a -> ArrayFold m x b -> ArrayFold m x b
251−split_ (ArrayFold p1) (ArrayFold p2) =
252− ArrayFold $ ParserD.noErrorUnsafeSplit_ p1 p2
250+ ChunkFold m x a -> ChunkFold m x b -> ChunkFold m x b
251+split_ (ChunkFold p1) (ChunkFold p2) =
252+ ChunkFold $ ParserD.noErrorUnsafeSplit_ p1 p2
253253
254254-- | Applies two folds sequentially on the input stream and combines their
255255-- results using the supplied function.
@@ -257,13 +257,13 @@ split_ (ArrayFold p1) (ArrayFold p2) =
257257-- /Pre-release/
258258{-# INLINE splitWith #-}
259259splitWith :: MonadThrow m
260− => (a -> b -> c) -> ArrayFold m x a -> ArrayFold m x b -> ArrayFold m x c
261−splitWith f (ArrayFold p1) (ArrayFold p2) =
262− ArrayFold $ ParserD.noErrorUnsafeSplitWith f p1 p2
260+ => (a -> b -> c) -> ChunkFold m x a -> ChunkFold m x b -> ChunkFold m x c
261+splitWith f (ChunkFold p1) (ChunkFold p2) =
262+ ChunkFold $ ParserD.noErrorUnsafeSplitWith f p1 p2
263263
264264-- | 'Applicative' form of 'splitWith'.
265265-- > (<*>) = splitWith id
266−instance MonadThrow m => Applicative (ArrayFold m a) where
266+instance MonadThrow m => Applicative (ChunkFold m a) where
267267 {-# INLINE pure #-}
268268 pure = fromPure
269269
@@ -289,16 +289,16 @@ instance MonadThrow m => Applicative (ArrayFold m a) where
289289--
290290{-# INLINE concatMap #-}
291291concatMap :: MonadThrow m =>
292− (b -> ArrayFold m a c) -> ArrayFold m a b -> ArrayFold m a c
293−concatMap func (ArrayFold p) =
294− let f x = let ArrayFold y = func x in y
295− in ArrayFold $ ParserD.noErrorUnsafeConcatMap f p
292+ (b -> ChunkFold m a c) -> ChunkFold m a b -> ChunkFold m a c
293+concatMap func (ChunkFold p) =
294+ let f x = let ChunkFold y = func x in y
295+ in ChunkFold $ ParserD.noErrorUnsafeConcatMap f p
296296
297297-- | Monad instance applies folds sequentially. Next fold can depend on the
298298-- output of the previous fold. See 'concatMap'.
299299--
300300-- > (>>=) = flip concatMap
301−instance MonadThrow m => Monad (ArrayFold m a) where
301+instance MonadThrow m => Monad (ChunkFold m a) where
302302 {-# INLINE return #-}
303303 return = pure
304304
@@ -315,9 +315,9 @@ instance MonadThrow m => Monad (ArrayFold m a) where
315315-- | Take @n@ array elements (@a@) from a stream of arrays (@Array a@).
316316{-# INLINE take #-}
317317take :: forall m a b. (Monad m, Unbox a) =>
318− Int -> ArrayFold m a b -> ArrayFold m a b
319−take n (ArrayFold (ParserD.Parser step1 initial1 extract1)) =
320− ArrayFold $ ParserD.Parser step initial extract
318+ Int -> ChunkFold m a b -> ChunkFold m a b
319+take n (ChunkFold (ParserD.Parser step1 initial1 extract1)) =
320+ ChunkFold $ ParserD.Parser step initial extract
321321
322322 where
323323
@@ -327,7 +327,7 @@ take n (ArrayFold (ParserD.Parser step1 initial1 extract1)) =
327327 return $ case r of
328328 Done _ b -> IDone b
329329 Error err -> IError err
330− _ -> error "Bug: ArrayFold take invalid state in initial"
330+ _ -> error "Bug: ChunkFold take invalid state in initial"
331331
332332 initial = do
333333 res <- initial1