on master help sign in
Merge PreludeCommon and Prelude into Common in the core package
fe8e579Adithya Kumar
benchmark/Streamly/Benchmark/Data/Stream/StreamDK.hs+1−1
@@ -17,7 +17,7 @@ import Prelude hiding ()
17-- import qualified Data.List as List
17-- import qualified Data.List as List
18
18
19import qualified Streamly.Internal.Data.Stream.StreamDK as S
19import qualified Streamly.Internal.Data.Stream.StreamDK as S
20−-- import qualified Streamly.Internal.Data.Stream.Prelude as SP
20+-- import qualified Streamly.Internal.Data.Stream.Common as SP
21-- import qualified Streamly.Internal.Data.SVar as S
21-- import qualified Streamly.Internal.Data.SVar as S
22
22
23import Streamly.Benchmark.Common
23import Streamly.Benchmark.Common
core/src/Streamly/Internal/Data/Array/Foreign.hs+1−1
@@ -144,7 +144,7 @@ import qualified Streamly.Internal.Data.Array.Foreign.Mut as MA
144import qualified Streamly.Internal.Data.Array.Foreign.Type as A
144import qualified Streamly.Internal.Data.Array.Foreign.Type as A
145import qualified Streamly.Internal.Data.Fold as FL
145import qualified Streamly.Internal.Data.Fold as FL
146import qualified Streamly.Internal.Data.Producer as Producer
146import qualified Streamly.Internal.Data.Producer as Producer
147−import qualified Streamly.Internal.Data.Stream.Prelude as P
147+import qualified Streamly.Internal.Data.Stream.Common as P
148import qualified Streamly.Internal.Data.Stream.StreamD as D
148import qualified Streamly.Internal.Data.Stream.StreamD as D
149import qualified Streamly.Internal.Data.Unfold as Unfold
149import qualified Streamly.Internal.Data.Unfold as Unfold
150import qualified Streamly.Internal.Data.Ring.Foreign as RB
150import qualified Streamly.Internal.Data.Ring.Foreign as RB
core/src/Streamly/Internal/Data/Array/Foreign/Mut.hs+1−1
@@ -39,7 +39,7 @@ import Streamly.Internal.Data.Unfold.Type (Unfold(..))
39
39
40import qualified Streamly.Internal.Data.Stream.StreamD as D
40import qualified Streamly.Internal.Data.Stream.StreamD as D
41import qualified Streamly.Internal.Data.Unfold as Unfold
41import qualified Streamly.Internal.Data.Unfold as Unfold
42−-- import qualified Streamly.Internal.Data.Stream.Prelude as P
42+-- import qualified Streamly.Internal.Data.Stream.Common as P
43
43
44import Prelude hiding (foldr, length, read, splitAt)
44import Prelude hiding (foldr, length, read, splitAt)
45import Streamly.Internal.Data.Array.Foreign.Mut.Type
45import Streamly.Internal.Data.Array.Foreign.Mut.Type
core/src/Streamly/Internal/Data/Pipe.hs+1−1
@@ -260,7 +260,7 @@ import Streamly.Internal.Data.Pipe.Type
260-- import qualified Streamly.Prelude as S
260-- import qualified Streamly.Prelude as S
261-- import qualified Streamly.Internal.Data.Stream.StreamD as D
261-- import qualified Streamly.Internal.Data.Stream.StreamD as D
262-- import qualified Streamly.Internal.Data.Stream.StreamK as K
262-- import qualified Streamly.Internal.Data.Stream.StreamK as K
263−-- import qualified Streamly.Internal.Data.Stream.Prelude as P
263+-- import qualified Streamly.Internal.Data.Stream.Common as P
264
264
265------------------------------------------------------------------------------
265------------------------------------------------------------------------------
266-- Pipes
266-- Pipes
core/src/Streamly/Internal/Data/Stream/Common.hsnew file+161
@@ -0,0 +1,161 @@
1+{-# LANGUAGE UndecidableInstances #-}
2+{-# OPTIONS_GHC -Wno-orphans #-}
3+
4+-- |
5+-- Module : Streamly.Internal.Data.Stream.Common
6+-- Copyright : (c) 2017 Composewell Technologies
7+-- License : BSD-3-Clause
8+-- Maintainer : streamly@composewell.com
9+-- Stability : experimental
10+-- Portability : GHC
11+--
12+-- Low level functions using StreamK as the intermediate stream type. These
13+-- functions are used in other stream modules to implement their instances.
14+--
15+module Streamly.Internal.Data.Stream.Common
16+ (
17+ -- * Running Effects
18+ drain
19+
20+ -- * Conversion operations
21+ , fromList
22+ , toList
23+
24+ -- * Fold operations
25+ , foldrM
26+ , foldrMx
27+ , foldr
28+
29+ , foldlx'
30+ , foldlMx'
31+ , foldl'
32+ , fold
33+
34+ -- * Zip style operations
35+ , eqBy
36+ , cmpBy
37+ )
38+where
39+
40+#include "inline.hs"
41+
42+import Streamly.Internal.Data.Fold.Type (Fold (..))
43+
44+#ifdef USE_STREAMK_ONLY
45+import qualified Streamly.Internal.Data.Stream.StreamK as S
46+import qualified Streamly.Internal.Data.Stream.StreamK.Type as S
47+#else
48+import qualified Streamly.Internal.Data.Stream.StreamD.Type as S
49+#endif
50+
51+import qualified Streamly.Internal.Data.Stream.StreamK.Type as K
52+import qualified Streamly.Internal.Data.Stream.StreamD.Type as D
53+
54+import Prelude hiding (foldr, repeat)
55+
56+------------------------------------------------------------------------------
57+-- Conversions
58+------------------------------------------------------------------------------
59+
60+{-# INLINE_EARLY drain #-}
61+drain :: Monad m => K.Stream m a -> m ()
62+drain m = D.drain $ D.fromStreamK m
63+{-# RULES "drain fallback to CPS" [1]
64+ forall a. D.drain (D.fromStreamK a) = K.drain a #-}
65+
66+------------------------------------------------------------------------------
67+-- Conversions
68+------------------------------------------------------------------------------
69+
70+-- |
71+-- @
72+-- fromList = 'Prelude.foldr' 'K.cons' 'K.nil'
73+-- @
74+--
75+-- Construct a stream from a list of pure values. This is more efficient than
76+-- 'K.fromFoldable' for serial streams.
77+--
78+-- @since 0.4.0
79+{-# INLINE_EARLY fromList #-}
80+fromList :: Monad m => [a] -> K.Stream m a
81+fromList = S.toStreamK . S.fromList
82+{-# RULES "fromList fallback to StreamK" [1]
83+ forall a. S.toStreamK (S.fromList a) = K.fromFoldable a #-}
84+
85+-- | Convert a stream into a list in the underlying monad.
86+--
87+-- @since 0.1.0
88+{-# INLINE toList #-}
89+toList :: Monad m => K.Stream m a -> m [a]
90+toList m = S.toList $ S.fromStreamK m
91+
92+------------------------------------------------------------------------------
93+-- Folds
94+------------------------------------------------------------------------------
95+
96+{-# INLINE foldrM #-}
97+foldrM :: Monad m => (a -> m b -> m b) -> m b -> K.Stream m a -> m b
98+foldrM step acc m = S.foldrM step acc $ S.fromStreamK m
99+
100+{-# INLINE foldrMx #-}
101+foldrMx :: Monad m
102+ => (a -> m x -> m x) -> m x -> (m x -> m b) -> K.Stream m a -> m b
103+foldrMx step final project m = D.foldrMx step final project $ D.fromStreamK m
104+
105+{-# INLINE foldr #-}
106+foldr :: Monad m => (a -> b -> b) -> b -> K.Stream m a -> m b
107+foldr f z = foldrM (\a b -> f a <$> b) (return z)
108+
109+-- | Like 'foldlx'', but with a monadic step function.
110+--
111+-- @since 0.7.0
112+{-# INLINE foldlMx' #-}
113+foldlMx' ::
114+ Monad m
115+ => (x -> a -> m x) -> m x -> (x -> m b) -> K.Stream m a -> m b
116+foldlMx' step begin done m = S.foldlMx' step begin done $ S.fromStreamK m
117+
118+-- | Strict left fold with an extraction function. Like the standard strict
119+-- left fold, but applies a user supplied extraction function (the third
120+-- argument) to the folded value at the end. This is designed to work with the
121+-- @foldl@ library. The suffix @x@ is a mnemonic for extraction.
122+--
123+-- @since 0.7.0
124+{-# INLINE foldlx' #-}
125+foldlx' ::
126+ Monad m => (x -> a -> x) -> x -> (x -> b) -> K.Stream m a -> m b
127+foldlx' step begin done m = S.foldlx' step begin done $ S.fromStreamK m
128+
129+-- | Strict left associative fold.
130+--
131+-- @since 0.2.0
132+{-# INLINE foldl' #-}
133+foldl' ::
134+ Monad m => (b -> a -> b) -> b -> K.Stream m a -> m b
135+foldl' step begin m = S.foldl' step begin $ S.fromStreamK m
136+
137+
138+{-# INLINE fold #-}
139+fold :: Monad m => Fold m a b -> K.Stream m a -> m b
140+fold fld m = S.fold fld $ S.fromStreamK m
141+
142+------------------------------------------------------------------------------
143+-- Comparison
144+------------------------------------------------------------------------------
145+
146+-- | Compare two streams for equality
147+--
148+-- @since 0.5.3
149+{-# INLINE eqBy #-}
150+eqBy :: Monad m =>
151+ (a -> b -> Bool) -> K.Stream m a -> K.Stream m b -> m Bool
152+eqBy f m1 m2 = D.eqBy f (D.fromStreamK m1) (D.fromStreamK m2)
153+
154+-- | Compare two streams
155+--
156+-- @since 0.5.3
157+{-# INLINE cmpBy #-}
158+cmpBy
159+ :: Monad m
160+ => (a -> b -> Ordering) -> K.Stream m a -> K.Stream m b -> m Ordering
161+cmpBy f m1 m2 = D.cmpBy f (D.fromStreamK m1) (D.fromStreamK m2)
core/src/Streamly/Internal/Data/Stream/Prelude.hsdeleted−57
@@ -1,57 +0,0 @@
1−{-# LANGUAGE UndecidableInstances #-}
2−{-# OPTIONS_GHC -Wno-orphans #-}
3−
4−-- |
5−-- Module : Streamly.Internal.Data.Stream.Prelude
6−-- Copyright : (c) 2017 Composewell Technologies
7−-- License : BSD-3-Clause
8−-- Maintainer : streamly@composewell.com
9−-- Stability : experimental
10−-- Portability : GHC
11−--
12−-- Low level functions using StreamK as the intermediate stream type. These
13−-- functions are used in SerialT/AsyncT/AheadT/ParallelT stream modules to
14−-- implement their instances..
15−--
16−module Streamly.Internal.Data.Stream.Prelude
17− (
18− -- * Running Effects
19− drain
20−
21− -- * Conversion operations
22− , fromList
23− , toList
24−
25− -- * Fold operations
26− , foldrM
27− , foldrMx
28− , foldr
29−
30− , foldlx'
31− , foldlMx'
32− , foldl'
33− , fold
34−
35− -- * Zip style operations
36− , eqBy
37− , cmpBy
38− )
39−where
40−
41−#include "inline.hs"
42−
43−import Streamly.Internal.Data.Fold.Type (Fold (..))
44−
45−#ifdef USE_STREAMK_ONLY
46−import qualified Streamly.Internal.Data.Stream.StreamK as S
47−import qualified Streamly.Internal.Data.Stream.StreamK.Type as S
48−#else
49−import qualified Streamly.Internal.Data.Stream.StreamD.Type as S
50−#endif
51−
52−import qualified Streamly.Internal.Data.Stream.StreamK.Type as K
53−import qualified Streamly.Internal.Data.Stream.StreamD.Type as D
54−
55−import Prelude hiding (foldr, repeat)
56−
57−#include "PreludeCommon.hs"
core/src/Streamly/Internal/Data/Stream/PreludeCommon.hsdeleted−139
@@ -1,139 +0,0 @@
1−------------------------------------------------------------------------------
2−-- Conversion to and from direct style stream
3−------------------------------------------------------------------------------
4−
5−#ifdef USE_IS_STREAM
6−#define IS_STREAM IsStream t,
7−#define FROM_STREAM fromStream
8−#define TO_STREAM toStream
9−#define STREAM t
10−#else
11−#define IS_STREAM
12−#define FROM_STREAM id
13−#define TO_STREAM id
14−#define STREAM K.Stream
15−#endif
16−
17−-- These definitions are dependent on what is imported as S
18−{-# INLINE fromStreamS #-}
19−fromStreamS :: (IS_STREAM Monad m) => S.Stream m a -> STREAM m a
20−fromStreamS = FROM_STREAM . S.toStreamK
21−
22−{-# INLINE toStreamS #-}
23−toStreamS :: (IS_STREAM Monad m) => STREAM m a -> S.Stream m a
24−toStreamS = S.fromStreamK . TO_STREAM
25−
26−{-# INLINE toStreamD #-}
27−toStreamD :: (IS_STREAM Monad m) => STREAM m a -> D.Stream m a
28−toStreamD = D.fromStreamK . TO_STREAM
29−
30−------------------------------------------------------------------------------
31−-- Conversions
32−------------------------------------------------------------------------------
33−
34−{-# INLINE_EARLY drain #-}
35−drain :: (IS_STREAM Monad m) => STREAM m a -> m ()
36−drain m = D.drain $ D.fromStreamK (TO_STREAM m)
37−{-# RULES "drain fallback to CPS" [1]
38− forall a. D.drain (D.fromStreamK a) = K.drain a #-}
39−
40−------------------------------------------------------------------------------
41−-- Conversions
42−------------------------------------------------------------------------------
43−
44−-- |
45−-- @
46−-- fromList = 'Prelude.foldr' 'K.cons' 'K.nil'
47−-- @
48−--
49−-- Construct a stream from a list of pure values. This is more efficient than
50−-- 'K.fromFoldable' for serial streams.
51−--
52−-- @since 0.4.0
53−{-# INLINE_EARLY fromList #-}
54−#ifdef USE_IS_STREAM
55−fromList :: (Monad m, IsStream t) => [a] -> STREAM m a
56−#else
57−fromList :: Monad m => [a] -> STREAM m a
58−#endif
59−fromList = fromStreamS . S.fromList
60−{-# RULES "fromList fallback to StreamK" [1]
61− forall a. S.toStreamK (S.fromList a) = K.fromFoldable a #-}
62−
63−-- | Convert a stream into a list in the underlying monad.
64−--
65−-- @since 0.1.0
66−{-# INLINE toList #-}
67−toList :: (IS_STREAM Monad m) => STREAM m a -> m [a]
68−toList m = S.toList $ toStreamS m
69−
70−------------------------------------------------------------------------------
71−-- Folds
72−------------------------------------------------------------------------------
73−
74−{-# INLINE foldrM #-}
75−foldrM :: (IS_STREAM Monad m) => (a -> m b -> m b) -> m b -> STREAM m a -> m b
76−foldrM step acc m = S.foldrM step acc $ toStreamS m
77−
78−{-# INLINE foldrMx #-}
79−foldrMx :: (IS_STREAM Monad m)
80− => (a -> m x -> m x) -> m x -> (m x -> m b) -> STREAM m a -> m b
81−foldrMx step final project m = D.foldrMx step final project $ toStreamD m
82−
83−{-# INLINE foldr #-}
84−foldr :: (IS_STREAM Monad m) => (a -> b -> b) -> b -> STREAM m a -> m b
85−foldr f z = foldrM (\a b -> f a <$> b) (return z)
86−
87−-- | Like 'foldlx'', but with a monadic step function.
88−--
89−-- @since 0.7.0
90−{-# INLINE foldlMx' #-}
91−foldlMx' ::
92− (IS_STREAM Monad m)
93− => (x -> a -> m x) -> m x -> (x -> m b) -> STREAM m a -> m b
94−foldlMx' step begin done m = S.foldlMx' step begin done $ toStreamS m
95−
96−-- | Strict left fold with an extraction function. Like the standard strict
97−-- left fold, but applies a user supplied extraction function (the third
98−-- argument) to the folded value at the end. This is designed to work with the
99−-- @foldl@ library. The suffix @x@ is a mnemonic for extraction.
100−--
101−-- @since 0.7.0
102−{-# INLINE foldlx' #-}
103−foldlx' ::
104− (IS_STREAM Monad m) => (x -> a -> x) -> x -> (x -> b) -> STREAM m a -> m b
105−foldlx' step begin done m = S.foldlx' step begin done $ toStreamS m
106−
107−-- | Strict left associative fold.
108−--
109−-- @since 0.2.0
110−{-# INLINE foldl' #-}
111−foldl' ::
112− (IS_STREAM Monad m) => (b -> a -> b) -> b -> STREAM m a -> m b
113−foldl' step begin m = S.foldl' step begin $ toStreamS m
114−
115−
116−{-# INLINE fold #-}
117−fold :: (IS_STREAM Monad m) => Fold m a b -> STREAM m a -> m b
118−fold fld m = S.fold fld $ toStreamS m
119−
120−------------------------------------------------------------------------------
121−-- Comparison
122−------------------------------------------------------------------------------
123−
124−-- | Compare two streams for equality
125−--
126−-- @since 0.5.3
127−{-# INLINE eqBy #-}
128−eqBy :: (IS_STREAM Monad m) =>
129− (a -> b -> Bool) -> STREAM m a -> STREAM m b -> m Bool
130−eqBy f m1 m2 = D.eqBy f (toStreamD m1) (toStreamD m2)
131−
132−-- | Compare two streams
133−--
134−-- @since 0.5.3
135−{-# INLINE cmpBy #-}
136−cmpBy
137− :: (IS_STREAM Monad m)
138− => (a -> b -> Ordering) -> STREAM m a -> STREAM m b -> m Ordering
139−cmpBy f m1 m2 = D.cmpBy f (toStreamD m1) (toStreamD m2)
core/src/Streamly/Internal/Data/Stream/Serial.hs+1−1
@@ -76,7 +76,7 @@ import Streamly.Internal.Data.Maybe.Strict (Maybe'(..), toMaybe)
76import Streamly.Internal.Data.Stream.StreamK.Type
76import Streamly.Internal.Data.Stream.StreamK.Type
77 (Stream, mkStream, foldStream)
77 (Stream, mkStream, foldStream)
78
78
79−import qualified Streamly.Internal.Data.Stream.Prelude as P
79+import qualified Streamly.Internal.Data.Stream.Common as P
80import qualified Streamly.Internal.Data.Stream.StreamD.Generate as D
80import qualified Streamly.Internal.Data.Stream.StreamD.Generate as D
81import qualified Streamly.Internal.Data.Stream.StreamD.Type as D
81import qualified Streamly.Internal.Data.Stream.StreamD.Type as D
82import qualified Streamly.Internal.Data.Stream.StreamK.Type as K
82import qualified Streamly.Internal.Data.Stream.StreamK.Type as K
core/src/Streamly/Internal/Data/Stream/Zip.hs+1−1
@@ -47,7 +47,7 @@ import Streamly.Internal.Data.Maybe.Strict (Maybe'(..), toMaybe)
47import Streamly.Internal.Data.Stream.Serial (SerialT(..))
47import Streamly.Internal.Data.Stream.Serial (SerialT(..))
48import Streamly.Internal.Data.Stream.StreamK.Type (Stream)
48import Streamly.Internal.Data.Stream.StreamK.Type (Stream)
49
49
50−import qualified Streamly.Internal.Data.Stream.Prelude as P
50+import qualified Streamly.Internal.Data.Stream.Common as P
51 (cmpBy, eqBy, foldl', foldr, fromList, toList)
51 (cmpBy, eqBy, foldl', foldr, fromList, toList)
52import qualified Streamly.Internal.Data.Stream.StreamK.Type as K
52import qualified Streamly.Internal.Data.Stream.StreamK.Type as K
53import qualified Streamly.Internal.Data.Stream.StreamD as D
53import qualified Streamly.Internal.Data.Stream.StreamD as D
core/streamly-core.cabal+1−3
@@ -21,7 +21,6 @@ extra-source-files:
21
21
22 -- This is duplicated
22 -- This is duplicated
23 src/Streamly/Internal/Data/Stream/Instances.hs
23 src/Streamly/Internal/Data/Stream/Instances.hs
24− src/Streamly/Internal/Data/Stream/PreludeCommon.hs
25 src/Streamly/Internal/Data/Array/ArrayMacros.h
24 src/Streamly/Internal/Data/Array/ArrayMacros.h
26 src/inline.hs
25 src/inline.hs
27
26
@@ -199,7 +198,6 @@ library
199
198
200 include-dirs:
199 include-dirs:
201 src
200 src
202− , src/Streamly/Internal/Data/Stream
203 , src/Streamly/Internal/Data/Array
201 , src/Streamly/Internal/Data/Array
204
202
205 if os(windows)
203 if os(windows)
@@ -279,7 +277,7 @@ library
279 , Streamly.Internal.Data.Stream.StreamD.Lift
277 , Streamly.Internal.Data.Stream.StreamD.Lift
280 , Streamly.Internal.Data.Stream.StreamD
278 , Streamly.Internal.Data.Stream.StreamD
281 , Streamly.Internal.Data.Stream.StreamDK
279 , Streamly.Internal.Data.Stream.StreamDK
282− , Streamly.Internal.Data.Stream.Prelude
280+ , Streamly.Internal.Data.Stream.Common
283
281
284 , Streamly.Internal.Data.Parser.ParserD.Tee
282 , Streamly.Internal.Data.Parser.ParserD.Tee
285 , Streamly.Internal.Data.Parser.ParserD
283 , Streamly.Internal.Data.Parser.ParserD
src/Streamly/Internal/Data/Array/PrimInclude.hs+1−1
@@ -11,7 +11,7 @@ import Streamly.Internal.Data.Fold.Type (Fold(..))
11import Streamly.Internal.Data.Unfold.Type (Unfold(..))
11import Streamly.Internal.Data.Unfold.Type (Unfold(..))
12import Streamly.Internal.Data.Stream.Serial (SerialT(..))
12import Streamly.Internal.Data.Stream.Serial (SerialT(..))
13
13
14−import qualified Streamly.Internal.Data.Stream.Prelude as P
14+import qualified Streamly.Internal.Data.Stream.Common as P
15import qualified Streamly.Internal.Data.Stream.StreamD as D
15import qualified Streamly.Internal.Data.Stream.StreamD as D
16
16
17import Prelude hiding (length, null, last, map, (!!), read, concat)
17import Prelude hiding (length, null, last, map, (!!), read, concat)
streamly.cabal+2−3
@@ -134,7 +134,6 @@ extra-source-files:
134 core/configure
134 core/configure
135 core/configure.ac
135 core/configure.ac
136 core/src/Streamly/Internal/Data/Stream/Instances.hs
136 core/src/Streamly/Internal/Data/Stream/Instances.hs
137− core/src/Streamly/Internal/Data/Stream/PreludeCommon.hs
138 core/src/Streamly/Internal/Data/Array/ArrayMacros.h
137 core/src/Streamly/Internal/Data/Array/ArrayMacros.h
139 core/src/inline.hs
138 core/src/inline.hs
140 core/src/Streamly/Internal/Data/Time/Clock/config-clock.h
139 core/src/Streamly/Internal/Data/Time/Clock/config-clock.h
@@ -186,7 +185,7 @@ extra-source-files:
186 core/src/Streamly/Internal/Data/Stream/StreamD/Lift.hs
185 core/src/Streamly/Internal/Data/Stream/StreamD/Lift.hs
187 core/src/Streamly/Internal/Data/Stream/StreamD.hs
186 core/src/Streamly/Internal/Data/Stream/StreamD.hs
188 core/src/Streamly/Internal/Data/Stream/StreamDK.hs
187 core/src/Streamly/Internal/Data/Stream/StreamDK.hs
189− core/src/Streamly/Internal/Data/Stream/Prelude.hs
188+ core/src/Streamly/Internal/Data/Stream/Common.hs
190 core/src/Streamly/Internal/Data/Parser/ParserD/Tee.hs
189 core/src/Streamly/Internal/Data/Parser/ParserD/Tee.hs
191 core/src/Streamly/Internal/Data/Parser/ParserD.hs
190 core/src/Streamly/Internal/Data/Parser/ParserD.hs
192 core/src/Streamly/Internal/Data/Unfold.hs
191 core/src/Streamly/Internal/Data/Unfold.hs
@@ -575,7 +574,7 @@ library
575 , Streamly.Internal.Data.Stream.StreamD.Lift
574 , Streamly.Internal.Data.Stream.StreamD.Lift
576 , Streamly.Internal.Data.Stream.StreamD
575 , Streamly.Internal.Data.Stream.StreamD
577 , Streamly.Internal.Data.Stream.StreamDK
576 , Streamly.Internal.Data.Stream.StreamDK
578− , Streamly.Internal.Data.Stream.Prelude
577+ , Streamly.Internal.Data.Stream.Common
579
578
580 , Streamly.Internal.Data.Parser.ParserD.Tee
579 , Streamly.Internal.Data.Parser.ParserD.Tee
581 , Streamly.Internal.Data.Parser.ParserD
580 , Streamly.Internal.Data.Parser.ParserD