on master help sign in
Reduce Internal module imports from streamly-core package (#1830)

Use exposed APIs where possible. Co-authored-by: Harendra Kumar <harendra@composewell.com>

commitb1eb9c4bc472fe88005d17dcf1427146ee3b247d authorRanjeet Ranjan <ranjeetr@composewell.com> dateTue 20 Sep 2022, 02:48 (4 years ago) parent301c0a3
38 files changed+217−84
src/Streamly/Internal/Console/Stdio.hs+2−2 src/Streamly/Internal/Data/Array/Stream/Foreign.hs+17−7 src/Streamly/Internal/Data/Binary/Decode.hs+4 src/Streamly/Internal/Data/Fold/Async.hs+2−2 src/Streamly/Internal/Data/Fold/SVar.hs+1−1 src/Streamly/Internal/Data/SmallArray.hs+6−5 src/Streamly/Internal/Data/Stream/Ahead.hs+4−1 src/Streamly/Internal/Data/Stream/Async.hs+4−2 src/Streamly/Internal/Data/Stream/IsStream/Common.hs+6−1 src/Streamly/Internal/Data/Stream/IsStream/Eliminate.hs+7−1 src/Streamly/Internal/Data/Stream/IsStream/Enumeration.hs+11−1 src/Streamly/Internal/Data/Stream/IsStream/Exception.hs+13−1 src/Streamly/Internal/Data/Stream/IsStream/Expand.hs+6−1 src/Streamly/Internal/Data/Stream/IsStream/Generate.hs+8−2 src/Streamly/Internal/Data/Stream/IsStream/Lift.hs+1 src/Streamly/Internal/Data/Stream/IsStream/Reduce.hs+17 src/Streamly/Internal/Data/Stream/IsStream/Top.hs+4−2 src/Streamly/Internal/Data/Stream/IsStream/Transform.hs+9−1 src/Streamly/Internal/Data/Stream/IsStream/Type.hs+9−1 src/Streamly/Internal/Data/Stream/Parallel.hs+6−2 src/Streamly/Internal/Data/Stream/SVar/Eliminate.hs+4−1 src/Streamly/Internal/Data/Stream/SVar/Generate.hs+3−1 src/Streamly/Internal/Data/Stream/Serial.hs+3−2 src/Streamly/Internal/Data/Stream/WSerial.hs+4−2 src/Streamly/Internal/Data/Stream/ZipAsync.hs+4−3 src/Streamly/Internal/Data/Unfold/SVar.hs+1−5 src/Streamly/Internal/FileSystem/Dir.hs+4−3 src/Streamly/Internal/FileSystem/Event/Linux.hs+2−1 src/Streamly/Internal/FileSystem/FD.hs+3−1 src/Streamly/Internal/FileSystem/File.hs+8−6 src/Streamly/Internal/FileSystem/Handle.hs+7−4 src/Streamly/Internal/Network/Inet/TCP.hs+5−2 src/Streamly/Internal/Network/Socket.hs+8−4 src/Streamly/Internal/Unicode/Array/Char.hs+5−6 src/Streamly/Internal/Unicode/Char/Parser.hs+8−1 src/Streamly/Internal/Unicode/Stream.hs+7−6 src/Streamly/Internal/Unicode/String.hs+2−1 src/Streamly/Internal/Unicode/Utf8.hs+2−2
src/Streamly/Internal/Console/Stdio.hs+2−2
@@ -47,9 +47,9 @@ import Streamly.Internal.Data.Stream (Stream)
4747import Streamly.Internal.Data.Unfold (Unfold)
4848import Streamly.Internal.Data.Fold (Fold)
4949
50−import qualified Streamly.Internal.Data.Array.Unboxed as Array
50+import qualified Streamly.Data.Array.Unboxed as Array (fromList)
51+import qualified Streamly.Data.Unfold as Unfold (lmap)
5152import qualified Streamly.Internal.Data.Stream.IsStream as Stream
52−import qualified Streamly.Internal.Data.Unfold as Unfold
5353import qualified Streamly.Internal.FileSystem.Handle as Handle
5454import qualified Streamly.Internal.Unicode.Stream as Unicode
5555
src/Streamly/Internal/Data/Array/Stream/Foreign.hs+17−7
@@ -64,11 +64,11 @@ import GHC.Exts (SpecConstrAnnotation(..))
6464import GHC.Types (SPEC(..))
6565import Prelude hiding (null, last, (!!), read, concat, unlines)
6666
67+import Streamly.Data.Fold (Fold)
68+import Streamly.Data.Stream (Stream)
6769import Streamly.Internal.Data.Array.Unboxed.Type (Array(..))
6870import Streamly.Internal.Data.Array.Stream.Fold.Foreign (ArrayFold(..))
69−import Streamly.Internal.Data.Fold.Type (Fold(..))
7071import Streamly.Internal.Data.Parser (ParseError(..))
71−import Streamly.Internal.Data.Stream (Stream)
7272import Streamly.Internal.Data.Stream.IsStream.Type
7373 (IsStream, fromStreamD, toStreamD)
7474import Streamly.Internal.Data.SVar (adaptState, defState)
@@ -76,6 +76,7 @@ import Streamly.Internal.Data.Array.Unboxed.Mut.Type
7676 (allocBytesToElemCount)
7777import Streamly.Internal.Data.Tuple.Strict (Tuple'(..))
7878
79+import qualified Streamly.Data.Fold as FL
7980import qualified Streamly.Internal.Data.Array.Unboxed as A
8081import qualified Streamly.Internal.Data.Array.Unboxed as Array
8182-- import qualified Streamly.Internal.Data.Array.Stream.Fold.Foreign
@@ -84,12 +85,21 @@ import qualified Streamly.Internal.Data.Array.Unboxed.Type as A
8485import qualified Streamly.Internal.Data.Array.Unboxed.Mut.Type as MA
8586import qualified Streamly.Internal.Data.Array.Stream.Mut.Foreign as AS
8687import qualified Streamly.Internal.Data.Fold.Type as FL
88+ (Fold(..), Step(..))
8789import qualified Streamly.Internal.Data.Parser as PR
8890import qualified Streamly.Internal.Data.Parser.ParserD as PRD
91+ (Parser(..), Initial(..), fromParserK)
8992import qualified Streamly.Internal.Data.Stream.IsStream as S
9093import qualified Streamly.Internal.Data.Stream.StreamD as D
91−import qualified Streamly.Internal.Data.Stream.StreamK as K
92−import qualified Streamly.Internal.Data.Stream.Type as Stream
94+ ( fromList, nil, cons, map
95+ , unfoldMany, append, splitInnerBy, splitInnerBySuffix
96+ )
97+import qualified Streamly.Internal.Data.Stream.StreamD.Type as D
98+ (Step(Yield, Stop, Skip), Stream(Stream))
99+import qualified Streamly.Internal.Data.Stream.StreamK.Type as K
100+ (Stream, cons, nil, fromPure, foldStream)
101+import qualified Streamly.Internal.Data.Stream as Stream
102+ (fromStreamK, toStreamK)
93103
94104-- XXX Since these are immutable arrays MonadIO constraint can be removed from
95105-- most places.
@@ -319,7 +329,7 @@ splitOnSuffix byte s =
319329{-# INLINE_NORMAL foldBreakD #-}
320330foldBreakD :: forall m a b. (MonadIO m, Unboxed a) =>
321331 Fold m a b -> D.Stream m (Array a) -> m (b, D.Stream m (Array a))
322−foldBreakD (Fold fstep initial extract) stream@(D.Stream step state) = do
332+foldBreakD (FL.Fold fstep initial extract) stream@(D.Stream step state) = do
323333 res <- initial
324334 case res of
325335 FL.Partial fs -> go SPEC state fs
@@ -355,7 +365,7 @@ foldBreakD (Fold fstep initial extract) stream@(D.Stream step state) = do
355365{-# INLINE_NORMAL foldBreakK #-}
356366foldBreakK :: forall m a b. (MonadIO m, Unboxed a) =>
357367 Fold m a b -> K.Stream m (Array a) -> m (b, K.Stream m (Array a))
358−foldBreakK (Fold fstep initial extract) stream = do
368+foldBreakK (FL.Fold fstep initial extract) stream = do
359369 res <- initial
360370 case res of
361371 FL.Partial fs -> go fs stream
@@ -395,7 +405,7 @@ foldBreakK (Fold fstep initial extract) stream = do
395405{-# INLINE_NORMAL foldBreak #-}
396406foldBreak ::
397407 (MonadIO m, Unboxed a)
398− => FL.Fold m a b
408+ => Fold m a b
399409 -> Stream m (A.Array a)
400410 -> m (b, Stream m (A.Array a))
401411-- foldBreak f s = fmap fromStreamD <$> foldBreakD f (toStreamD s)
src/Streamly/Internal/Data/Binary/Decode.hs+4
@@ -31,9 +31,13 @@ import Streamly.Internal.Data.Parser (Parser)
3131import Streamly.Internal.Data.Maybe.Strict (Maybe'(..))
3232import Streamly.Internal.Data.Tuple.Strict (Tuple' (..))
3333
34+import qualified Streamly.Data.Array.Unboxed as A
3435import qualified Streamly.Internal.Data.Array.Unboxed as A
36+ (unsafeIndex, castUnsafe)
3537import qualified Streamly.Internal.Data.Parser as PR
38+ (fromPure, either, satisfy, takeEQ)
3639import qualified Streamly.Internal.Data.Parser.ParserD as PRD
40+ (Parser(..), Initial(..), Step(..), toParserK)
3741
3842-- | A value of type '()' is encoded as @0@ in binary encoding.
3943--
src/Streamly/Internal/Data/Fold/Async.hs+2−2
@@ -21,11 +21,11 @@ import Control.Concurrent.MVar (MVar, newMVar, swapMVar, readMVar)
2121import Control.Exception (SomeException(..), catch, mask)
2222import Control.Monad (void)
2323import Control.Monad.IO.Class (MonadIO(..))
24+import Streamly.Data.Fold (many)
25+import Streamly.Internal.Data.Fold.Type (Fold(..), Step (..))
2426import Streamly.Internal.Control.Concurrent (MonadAsync, withRunInIO)
2527import Streamly.Internal.Data.Tuple.Strict (Tuple3'(..))
2628
27−import Streamly.Internal.Data.Fold.Type
28−
2929-- $setup
3030-- >>> :m
3131-- >>> :set -XFlexibleContexts
src/Streamly/Internal/Data/Fold/SVar.hs+1−1
@@ -20,7 +20,7 @@ import Control.Monad (void)
2020import Control.Monad.IO.Class (MonadIO(liftIO))
2121import Streamly.Internal.Data.Fold.Type (Fold(..))
2222
23−import qualified Streamly.Internal.Data.Fold.Type as FL
23+import qualified Streamly.Internal.Data.Fold.Type as FL (Step(Done, Partial))
2424
2525import Streamly.Internal.Data.SVar
2626
src/Streamly/Internal/Data/SmallArray.hs+6−5
@@ -48,17 +48,18 @@ import Control.Monad.IO.Class (MonadIO, liftIO)
4848import GHC.IO (unsafePerformIO)
4949import Data.Functor.Identity (runIdentity)
5050
51−import Streamly.Internal.Data.SmallArray.Type
52−
51+import Streamly.Data.Fold (Fold)
52+import Streamly.Data.Stream (Stream)
5353import Streamly.Internal.Data.Tuple.Strict (Tuple'(..))
5454import Streamly.Internal.Data.Unfold.Type (Unfold(..))
55−import Streamly.Internal.Data.Fold.Type (Fold(..))
56−import Streamly.Internal.Data.Stream.Type (Stream)
5755
5856import qualified Streamly.Internal.Data.Stream.StreamD as D
5957import qualified Streamly.Internal.Data.Fold.Type as FL
58+ (Fold (..), Step (Done, Partial))
6059import qualified Streamly.Internal.Data.Stream.Type as Stream
6160
61+import Streamly.Internal.Data.SmallArray.Type
62+
6263{-# NOINLINE bottomElement #-}
6364bottomElement :: a
6465bottomElement = undefined
@@ -106,7 +107,7 @@ foldr f z arr = runIdentity $ D.foldr f z $ toStreamD arr
106107-- of elements use an 'Array' from either "Streamly.Data.Array" or "Streamly.Data.Array.Foreign".
107108{-# INLINE_NORMAL writeN #-}
108109writeN :: MonadIO m => Int -> Fold m a (SmallArray a)
109−writeN len = Fold step initial extract
110+writeN len = FL.Fold step initial extract
110111
111112 where
112113
src/Streamly/Internal/Data/Stream/Ahead.hs+4−1
@@ -54,8 +54,11 @@ import Streamly.Internal.Control.Concurrent
5454import Streamly.Internal.Data.Stream.StreamK.Type (Stream)
5555
5656import qualified Streamly.Internal.Data.Stream.StreamK.Type as K
57+ (foldStreamShared, cons, mkStream, foldStream, fromEffect
58+ , nil, concatMapWith, fromPure, bindWith, withLocal)
5759import qualified Streamly.Internal.Data.Stream.StreamD.Type as D
58−import qualified Streamly.Internal.Data.Stream.Type as Stream
60+ (mapM, fromStreamK, toStreamK)
61+import qualified Streamly.Internal.Data.Stream as Stream (toStreamK)
5962
6063import Streamly.Internal.Data.Stream.SVar.Generate
6164import Streamly.Internal.Data.SVar
src/Streamly/Internal/Data/Stream/Async.hs+4−2
@@ -65,10 +65,12 @@ import Streamly.Internal.Data.Stream.StreamK.Type (Stream)
6565import Streamly.Internal.Data.Stream.SVar.Generate (fromSVar, fromSVarD)
6666
6767import qualified Streamly.Internal.Data.Stream.StreamK.Type as K
68+ (foldStreamShared, mkStream, foldStream, fromEffect
69+ , nil, concatMapWith, fromPure, bindWith, withLocal)
6870import qualified Streamly.Internal.Data.Stream.StreamD.Type as D
69−import qualified Streamly.Internal.Data.Stream.Type as Stream
71+ (Stream(..), Step(..), mapM, toStreamK, fromStreamK)
72+import qualified Streamly.Internal.Data.Stream as Stream (toStreamK)
7073
71−import Streamly.Internal.Data.SVar.Type
7274import Streamly.Internal.Data.SVar
7375
7476#include "Instances.hs"
src/Streamly/Internal/Data/Stream/IsStream/Common.hs+6−1
@@ -80,13 +80,18 @@ import Streamly.Internal.Data.Time.Units (AbsTime, RelTime64, addToAbsTime64)
8080import Streamly.Internal.System.IO (defaultChunkSize)
8181import Streamly.Internal.Data.Unboxed (Unboxed)
8282
83+import qualified Streamly.Data.Stream as Stream (fold, foldBreak)
8384import qualified Streamly.Internal.Data.Array.Unboxed.Type as A
8485import qualified Streamly.Internal.Data.Stream.Async as Async
8586import qualified Streamly.Internal.Data.Stream.IsStream.Type as IsStream
8687import qualified Streamly.Internal.Data.Stream.Parallel as Par
8788import qualified Streamly.Internal.Data.Stream.StreamK.Type as K
89+ (fromPure, fromEffect, repeatMWith, reverse)
8890import qualified Streamly.Internal.Data.Stream.StreamD as D
89−import qualified Streamly.Internal.Data.Stream as Stream
91+ (repeatM, times, foldContinue, map, scanlMAfter', postscanlMAfter'
92+ , postscanlM', take, takeWhile, takeEndBy, drop, findIndices
93+ , fromStreamK, toStreamK, concatMapM, concatMap, foldManyPost, splitOnSeq
94+ , zipWithM, zipWith, intersperseM, reverse)
9095
9196import Prelude hiding (take, takeWhile, drop, reverse, concatMap, map, zipWith)
9297
src/Streamly/Internal/Data/Stream/IsStream/Eliminate.hs+7−1
@@ -166,12 +166,18 @@ import Streamly.Internal.Data.Stream.IsStream.Type
166166import Streamly.Internal.Data.Stream.Serial (SerialT)
167167import Streamly.Internal.Data.Unboxed (Unboxed)
168168
169−import qualified Streamly.Internal.Data.Array.Unboxed.Type as A
169+import qualified Streamly.Data.Array.Unboxed as A
170+import qualified Streamly.Data.Stream as Stream
170171import qualified Streamly.Internal.Data.Fold as FL
171172import qualified Streamly.Internal.Data.Stream.IsStream.Type as IsStream
172173import qualified Streamly.Internal.Data.Stream.StreamD as D
174+ (foldr1, foldlT, foldlM', mapM_, null, head, headElse, last, elem
175+ , notElem, all, any, minimum, minimumBy, maximum, maximumBy, the, lookup
176+ , find, findM, toListRev, isPrefixOf, isSubsequenceOf, stripPrefix, (!!))
173177import qualified Streamly.Internal.Data.Stream.StreamK.Type as K
178+ (uncons, foldlS, tail, init)
174179import qualified Streamly.Internal.Data.Stream as Stream
180+ (foldr, toStreamK, parseK, parseD, parseBreakD, foldrM, stripSuffix)
175181import qualified System.IO as IO
176182
177183import Prelude hiding
src/Streamly/Internal/Data/Stream/IsStream/Enumeration.hs+11−1
@@ -63,7 +63,17 @@ import Data.Functor.Identity (Identity(..))
6363import Streamly.Internal.Data.Stream.IsStream.Type (IsStream(..), fromStreamD)
6464
6565import qualified Streamly.Internal.Data.Stream.IsStream.Type as IsStream
66−import qualified Streamly.Internal.Data.Stream.StreamD.Generate as D
66+import qualified Streamly.Internal.Data.Stream.StreamD as D
67+ ( enumerateFromNum
68+ , enumerateFromThenNum
69+ , enumerateFromThenToIntegral
70+ , enumerateFromThenIntegral
71+ , enumerateFromStepIntegral
72+ , enumerateFromToIntegral
73+ , enumerateFromIntegral
74+ , enumerateFromToFractional
75+ , enumerateFromThenToFractional
76+ )
6777import qualified Streamly.Internal.Data.Stream.Serial as Serial (map)
6878
6979-- $setup
src/Streamly/Internal/Data/Stream/IsStream/Exception.hs+13−1
@@ -30,7 +30,19 @@ import Streamly.Internal.Control.Concurrent (MonadRunInIO, MonadAsync)
3030import Streamly.Internal.Data.Stream.IsStream.Type
3131 (IsStream(..), fromStreamD, toStreamD)
3232
33−import qualified Streamly.Internal.Data.Stream.StreamD as D
33+import qualified Streamly.Internal.Data.Stream.StreamD.Exception as D
34+ ( before
35+ , after_
36+ , after
37+ , onException
38+ , bracket_
39+ , bracket'
40+ , finally_
41+ , finally
42+ , ghandle
43+ , handle
44+ , retry
45+ )
3446
3547-- $setup
3648-- >>> :m
src/Streamly/Internal/Data/Stream/IsStream/Expand.hs+6−1
@@ -171,14 +171,19 @@ import Streamly.Internal.Data.Stream.IsStream.Common
171171 , zipWith, zipWithM)
172172import Streamly.Internal.Data.Stream.IsStream.Type
173173 (IsStream(..), fromStreamD, toStreamD)
174−import Streamly.Internal.Data.Unfold.Type (Unfold)
174+import Streamly.Data.Unfold (Unfold)
175175
176176import qualified Streamly.Internal.Data.Stream.IsStream.Type as IsStream
177177import qualified Streamly.Internal.Data.Stream.Parallel as Par
178178import qualified Streamly.Internal.Data.Stream.WSerial as WSerial
179179import qualified Streamly.Internal.Data.Stream.StreamD as D
180+ (append, interleave, interleaveSuffix, interleaveInfix, interleaveMin
181+ , roundRobin, mergeByM, unfoldMany, unfoldManyInterleave, intersperse
182+ , unfoldManyRoundRobin, interpose, interposeSuffix, gintercalate
183+ , gintercalateSuffix, intersperseSuffix)
180184import qualified Streamly.Internal.Data.Stream.StreamK as K (mergeBy, mergeByM)
181185import qualified Streamly.Internal.Data.Stream.StreamK.Type as K
186+ (interleave, serial, concatPairsWith)
182187import qualified Streamly.Internal.Data.Stream.ZipAsync as ZipAsync
183188
184189import Prelude hiding (concat, concatMap, zipWith)
src/Streamly/Internal/Data/Stream/IsStream/Generate.hs+8−2
@@ -107,12 +107,18 @@ import Streamly.Internal.Data.Time.Units (AbsTime , RelTime64, addToAbsTime64)
107107import Streamly.Internal.Data.Unboxed (Unboxed)
108108
109109import qualified Streamly.Internal.Data.IORef.Unboxed as Unboxed
110+ (toStreamD, IORef)
110111import qualified Streamly.Internal.Data.Stream.IsStream.Type as IsStream
111112import qualified Streamly.Internal.Data.Stream.Parallel as Par
112113import qualified Streamly.Internal.Data.Stream.Serial as Serial
113−import qualified Streamly.Internal.Data.Stream.StreamD.Generate as D
114+import qualified Streamly.Internal.Data.Stream.StreamD as D
115+ (unfold, unfoldr, toStreamK, unfoldr, repeat, replicate, replicateM
116+ , fromIndices, fromIndicesM, iterate, iterateM, toStreamK, fromListM
117+ , fromListM)
114118import qualified Streamly.Internal.Data.Stream.StreamK.Type as K
115−import qualified Streamly.Internal.Data.Stream.Type as Stream
119+ (unfoldr, unfoldrMWith, replicateMWith, fromIndicesMWith, iterateMWith
120+ , mfix, fromFoldable, fromFoldableM)
121+import qualified Streamly.Internal.Data.Stream.Type as Stream (fromStreamK)
116122import qualified System.IO as IO
117123
118124import Prelude hiding (iterate, replicate, repeat)
src/Streamly/Internal/Data/Stream/IsStream/Lift.hs+1
@@ -33,6 +33,7 @@ import Streamly.Internal.Data.Stream.IsStream.Type
3333import Streamly.Internal.Data.Stream.Serial (SerialT)
3434
3535import qualified Streamly.Internal.Data.Stream.StreamD as D
36+ (hoist, liftInner, runReaderT, evalStateT, runStateT)
3637
3738------------------------------------------------------------------------------
3839-- Generalize the underlying monad
src/Streamly/Internal/Data/Stream/IsStream/Reduce.hs+17
@@ -182,11 +182,28 @@ import Streamly.Internal.Data.Unboxed (Unboxed)
182182import qualified Data.Heap as H
183183import qualified Streamly.Data.Unfold as Unfold
184184import qualified Streamly.Internal.Data.Array.Unboxed.Type as A
185+ (arraysOf, toStream)
185186import qualified Streamly.Internal.Data.Fold as FL
187+ (Fold, Step(..), takeEndBy_, takeEndBy, catMaybes, take)
186188import qualified Streamly.Internal.Data.IsMap as IsMap
187189import qualified Streamly.Internal.Data.Parser.ParserD as PRD
190+ (Parser(..), fromParserK)
188191import qualified Streamly.Internal.Data.Stream.IsStream.Type as IsStream
189192import qualified Streamly.Internal.Data.Stream.StreamD as D
193+ ( foldMany
194+ , chunksOf
195+ , refoldMany
196+ , foldIterateM
197+ , refoldIterateM
198+ , parseMany
199+ , parseIterate
200+ , groupsBy
201+ , groupsRollingBy
202+ , wordsBy
203+ , splitOnSuffixSeq
204+ , splitInnerBy
205+ , splitInnerBySuffix
206+ )
190207import qualified Streamly.Internal.Data.Stream.IsStream.Expand as Expand
191208import qualified Streamly.Internal.Data.Stream.IsStream.Transform as Transform
192209
src/Streamly/Internal/Data/Stream/IsStream/Top.hs+4−2
@@ -67,10 +67,12 @@ import Streamly.Internal.Data.Time.Units (NanoSecond64(..), toRelTime64)
6767
6868import qualified Data.List as List
6969import qualified Data.Map.Strict as Map
70−import qualified Streamly.Internal.Data.Array as Array
71−import qualified Streamly.Internal.Data.Array.Unboxed.Mut.Type as MA
70+import qualified Streamly.Internal.Data.Array as Array (fromStream, toStream)
71+import qualified Streamly.Data.Array.Unboxed.Mut as MA
7272import qualified Streamly.Internal.Data.Fold as Fold
73+ (head, last, toStream, toStreamRev)
7374import qualified Streamly.Internal.Data.Parser as Parser
75+ (groupByRollingEither)
7476import qualified Streamly.Internal.Data.Stream.IsStream.Lift as Stream
7577import qualified Streamly.Internal.Data.Stream.IsStream.Eliminate as Stream
7678import qualified Streamly.Internal.Data.Stream.IsStream.Generate as Stream
src/Streamly/Internal/Data/Stream/IsStream/Transform.hs+9−1
@@ -252,11 +252,19 @@ import Streamly.Internal.Data.Stream.Serial (SerialT)
252252import Streamly.Internal.Data.SVar (Rate(..))
253253import Streamly.Internal.Data.Time.Units (TimeUnit64, AbsTime, RelTime64)
254254
255−import qualified Streamly.Internal.Data.Fold as FL
255+import qualified Streamly.Data.Fold as FL
256256import qualified Streamly.Internal.Data.Stream.Parallel as Par
257257import qualified Streamly.Internal.Data.Stream.Serial as Serial
258258import qualified Streamly.Internal.Data.Stream.StreamD as D
259+ (transform, foldrT, tap, tapOffsetEvery, pollCounts, mapM, scanOnce
260+ , scanMany, postscanOnce, scanlx', scanlM', scanl', postscanl', prescanl'
261+ , prescanlM', scanl1M', scanl1', filter, filterM, uniq, deleteBy, takeWhileM
262+ , takeByTime, dropWhile, dropWhileM, dropByTime, insertBy, intersperse
263+ , intersperseM_, intersperseSuffix, intersperseSuffix_
264+ , intersperseSuffixBySpan, indexed, indexedR, rollingMap, rollingMapM
265+ , rollingMap2, mapMaybe, mapMaybeM)
259266import qualified Streamly.Internal.Data.Stream.StreamK.Type as K
267+ (foldrS, foldrSShared, mapMWith)
260268import qualified Prelude
261269
262270import Prelude hiding
src/Streamly/Internal/Data/Stream/IsStream/Type.hs+9−1
@@ -118,8 +118,16 @@ import qualified Streamly.Internal.Data.Stream.Parallel as Parallel
118118import qualified Streamly.Internal.Data.Stream.Serial as Serial
119119import qualified Streamly.Internal.Data.Stream.WSerial as WSerial
120120import qualified Streamly.Internal.Data.Stream.StreamD.Type as D
121+ (Stream(..), toStreamK, fromStreamK
122+ , drain, eqBy, cmpBy, fromList, toList, foldrMx, foldlMx'
123+ , foldlx', foldl', fold)
121124import qualified Streamly.Internal.Data.Stream.StreamK.Type as K
122−import qualified Streamly.Internal.Data.Stream.Type as Stream
125+ (Stream(..), cons, fromEffect
126+ , nil, fromPure, bindWith, drain
127+ , fromFoldable, consM, nilM, repeat)
128+import qualified Streamly.Data.Stream as Stream
129+import qualified Streamly.Internal.Data.Stream as Stream
130+ (fromStreamK, toStreamK)
123131import qualified Streamly.Internal.Data.Stream.Zip as Zip
124132import qualified Streamly.Internal.Data.Stream.ZipAsync as ZipAsync
125133
src/Streamly/Internal/Data/Stream/Parallel.hs+6−2
@@ -64,16 +64,20 @@ import Prelude hiding (map)
6464
6565import qualified Data.Set as Set
6666
67+import Streamly.Data.Fold (Fold)
6768import Streamly.Internal.Control.Concurrent (MonadAsync)
68−import Streamly.Internal.Data.Fold.Type (Fold)
6969import Streamly.Internal.Data.Stream.StreamD.Type (Step(..))
7070import Streamly.Internal.Data.Stream.StreamK.Type (Stream)
7171
7272import qualified Streamly.Internal.Data.Stream.StreamK.Type as K
73+ (foldStreamShared, mkStream, foldStream, fromEffect
74+ , nil, concatMapWith, fromPure, bindWith, withLocal)
7375import qualified Streamly.Internal.Data.Stream.StreamD.Type as D
76+ (Stream(..), mapM, toStreamK, fromStreamK)
7477import qualified Streamly.Internal.Data.Stream.SVar.Generate as SVar
7578import qualified Streamly.Internal.Data.Stream.SVar.Eliminate as SVar
76−import qualified Streamly.Internal.Data.Stream.Type as Stream
79+import qualified Streamly.Internal.Data.Stream as Stream
80+ (toStreamK, fromStreamK)
7781
7882import Streamly.Internal.Data.SVar
7983
src/Streamly/Internal/Data/Stream/SVar/Eliminate.hs+4−1
@@ -36,12 +36,15 @@ import Streamly.Internal.Control.ForkLifted (doFork)
3636import Streamly.Internal.Data.Atomics (atomicModifyIORefCAS_)
3737import Streamly.Internal.Data.Fold.SVar (write, writeLimited)
3838import Streamly.Internal.Data.Fold.Type (Fold(..))
39−import Streamly.Internal.Data.Stream.Type (Stream)
39+import Streamly.Data.Stream (Stream)
4040import Streamly.Internal.Data.Time.Clock (Clock(Monotonic), getTime)
4141
4242import qualified Streamly.Internal.Data.Stream.StreamD.Type as D
43+ (Stream(..), Step(..), fold)
4344import qualified Streamly.Internal.Data.Stream.StreamK.Type as K
45+ (Stream(..), mkStream, foldStream, foldStreamShared, nilM)
4446import qualified Streamly.Internal.Data.Stream.Type as Stream
47+ (fromStreamK, toStreamK)
4548
4649import Streamly.Internal.Data.SVar
4750
src/Streamly/Internal/Data/Stream/SVar/Generate.hs+3−1
@@ -43,8 +43,10 @@ import Streamly.Internal.Data.Time.Clock (Clock(Monotonic), getTime)
4343import System.Mem (performMajorGC)
4444
4545import qualified Streamly.Internal.Data.Stream.StreamD.Type as D
46+ (Stream(..), Step(..))
4647import qualified Streamly.Internal.Data.Stream.StreamK.Type as K
47−import qualified Streamly.Internal.Data.Stream.Type as Stream
48+ (Stream(..), foldStreamShared, mkStream, foldStream)
49+import qualified Streamly.Internal.Data.Stream.Type as Stream (fromStreamK)
4850
4951import Streamly.Internal.Data.SVar
5052
src/Streamly/Internal/Data/Stream/Serial.hs+3−2
@@ -38,8 +38,9 @@ where
3838import Data.Semigroup (Semigroup(..))
3939#endif
4040import GHC.Exts (IsList(..))
41−import Streamly.Internal.Data.Stream (Stream)
42−import qualified Streamly.Internal.Data.Stream as Stream
41+import Streamly.Data.Stream (Stream)
42+
43+import qualified Streamly.Data.Stream as Stream
4344
4445import Prelude hiding (map)
4546
src/Streamly/Internal/Data/Stream/WSerial.hs+4−2
@@ -50,9 +50,11 @@ import Streamly.Internal.Data.Maybe.Strict (Maybe'(..), toMaybe)
5050import Streamly.Internal.Data.Stream.StreamK.Type (Stream)
5151
5252import qualified Streamly.Internal.Data.Stream.Common as P
53−import qualified Streamly.Internal.Data.Stream.StreamD.Generate as D
54−import qualified Streamly.Internal.Data.Stream.StreamD.Type as D
53+import qualified Streamly.Internal.Data.Stream.StreamD as D
54+ (fromStreamK, toStreamK, mapM)
5555import qualified Streamly.Internal.Data.Stream.StreamK.Type as K
56+ (cons, consM, nil, concatMapWith, fromPure, bindWith
57+ , withLocal, interleave, interleaveFst, interleaveMin)
5658
5759import Prelude hiding (map, mapM, repeat, filter)
5860
src/Streamly/Internal/Data/Stream/ZipAsync.hs+4−3
@@ -27,13 +27,14 @@ import Data.Semigroup (Semigroup(..))
2727import Streamly.Internal.Control.Concurrent (MonadAsync)
2828import Streamly.Internal.Data.Stream.StreamK.Type (Stream)
2929
30−import qualified Streamly.Internal.Data.Stream.StreamK.Type as K
3130import qualified Streamly.Internal.Data.Stream.StreamK as K
32−import qualified Streamly.Internal.Data.Stream.StreamD as D
31+ (mkStream, foldStream, zipWithM, consM)
32+import qualified Streamly.Internal.Data.Stream.StreamD as D (fromStreamK)
3333import qualified Streamly.Internal.Data.Stream.Serial as Serial
3434import qualified Streamly.Internal.Data.Stream.SVar.Eliminate as SVar
3535import qualified Streamly.Internal.Data.Stream.SVar.Generate as SVar
36−import qualified Streamly.Internal.Data.Stream.Type as Stream
36+import qualified Streamly.Internal.Data.Stream as Stream
37+ (fromStreamK, toStreamK)
3738import Streamly.Internal.Data.SVar
3839
3940import Prelude hiding (map, repeat, zipWith, errorWithoutStackTrace)
src/Streamly/Internal/Data/Unfold/SVar.hs+1−5
@@ -24,16 +24,12 @@ import Streamly.Internal.Control.Concurrent (MonadAsync)
2424import Streamly.Internal.Data.Stream.StreamD.Type (Step(..))
2525import Streamly.Internal.Data.Time.Clock (Clock(Monotonic), getTime)
2626import Streamly.Internal.Data.SVar (printSVar, cleanupSVar, sendStopToProducer)
27+import Streamly.Internal.Data.Unfold.Type (Unfold(..))
2728import System.Mem (performMajorGC)
2829
2930import qualified Control.Monad.Catch as MC
3031
3132import Streamly.Internal.Data.SVar.Type
32−import Streamly.Internal.Data.Unfold.Type
33−import Prelude
34− hiding (map, mapM, takeWhile, take, filter, const, zipWith
35− , drop, dropWhile, either)
36−
3733-------------------------------------------------------------------------------
3834-- Generation from SVar
3935-------------------------------------------------------------------------------
src/Streamly/Internal/FileSystem/Dir.hs+4−3
@@ -72,7 +72,8 @@ import Streamly.Internal.Data.Stream.IsStream.Type (IsStream)
7272
7373-- import qualified Streamly.Data.Fold as FL
7474-- import qualified Streamly.Internal.Data.Fold.Type as FL
75−import qualified Streamly.Internal.Data.Unfold as UF
75+import qualified Streamly.Data.Unfold as UF
76+import qualified Streamly.Internal.Data.Unfold as UF (mapM2)
7677-- import qualified Streamly.Internal.Data.Array.Stream.Foreign as AS
7778import qualified Streamly.Internal.Data.Stream.IsStream as S
7879-- import qualified Streamly.Data.Array.Unboxed as A
@@ -239,7 +240,7 @@ readEither =
239240--
240241{-# INLINE readFiles #-}
241242readFiles :: MonadIO m => Unfold m String String
242−readFiles = UF.map (fromRight undefined) $ UF.filter isRight readEither
243+readFiles = fmap (fromRight undefined) $ UF.filter isRight readEither
243244
244245-- | Read directories only. Filter out "." and ".." entries.
245246--
@@ -247,7 +248,7 @@ readFiles = UF.map (fromRight undefined) $ UF.filter isRight readEither
247248--
248249{-# INLINE readDirs #-}
249250readDirs :: MonadIO m => Unfold m String String
250−readDirs = UF.map (fromLeft undefined) $ UF.filter isLeft readEither
251+readDirs = fmap (fromLeft undefined) $ UF.filter isLeft readEither
251252
252253-- | Raw read of a directory.
253254--
src/Streamly/Internal/FileSystem/Event/Linux.hs+2−1
@@ -182,8 +182,9 @@ import GHC.IO.Handle.FD (handleToFd)
182182import qualified Data.IntMap.Lazy as Map
183183import qualified Data.List.NonEmpty as NonEmpty
184184import qualified Streamly.Internal.Data.Array.Unboxed as A
185−import qualified Streamly.Internal.Data.Fold as FL
185+import qualified Streamly.Data.Fold as FL
186186import qualified Streamly.Internal.Data.Parser as PR
187+ (takeEQ, fromEffect, fromFold)
187188import qualified Streamly.Internal.Data.Stream.IsStream as S
188189import qualified Streamly.Internal.FileSystem.Dir as Dir
189190import qualified Streamly.Internal.FileSystem.Handle as FH
src/Streamly/Internal/FileSystem/FD.hs+3−1
@@ -146,10 +146,12 @@ import qualified Streamly.Internal.System.IOVec.Type as RawIO
146146-- import Streamly.String (encodeUtf8, decodeUtf8, foldLines)
147147
148148import qualified Streamly.Data.Array.Unboxed as A
149−import qualified Streamly.Internal.Data.Array.Unboxed.Mut.Type as MArray
149+import qualified Streamly.Internal.Data.Array.Unboxed.Mut as MArray
150+ (Array(..), newPinnedArrayBytes, asPtrUnsafe)
150151import qualified Streamly.Internal.Data.Array.Stream.Foreign as AS
151152import qualified Streamly.Prelude as S
152153import qualified Streamly.Internal.Data.Stream.StreamD.Type as D
154+ (Stream(..), Step(..))
153155
154156-------------------------------------------------------------------------------
155157-- References
src/Streamly/Internal/FileSystem/File.hs+8−6
@@ -94,19 +94,21 @@ import Prelude hiding (read)
9494import qualified Control.Monad.Catch as MC
9595import qualified System.IO as SIO
9696
97+import Streamly.Data.Fold (chunksOf)
9798import Streamly.Internal.Control.Concurrent (MonadAsync)
98−import Streamly.Internal.Data.Fold.Type (Fold(..))
99−import Streamly.Internal.Data.Unfold.Type (Unfold(..))
10099import Streamly.Internal.Data.Array.Unboxed.Type (Array(..), writeNUnsafe)
100+import Streamly.Internal.Data.Fold.Type (Fold(..))
101101import Streamly.Internal.Data.Stream.Type (Stream)
102102import Streamly.Internal.Data.Stream.IsStream.Type (IsStream)
103−-- import Streamly.Data.Fold (Fold)
103+import Streamly.Internal.Data.Unfold.Type (Unfold(..))
104104-- import Streamly.String (encodeUtf8, decodeUtf8, foldLines)
105105import Streamly.Internal.System.IO (defaultChunkSize)
106106
107−import qualified Streamly.Internal.Data.Array.Unboxed as A
107+import qualified Streamly.Data.Array.Unboxed as A
108+import qualified Streamly.Data.Unfold as UF
108109import qualified Streamly.Internal.Data.Fold.Type as FL
109−import qualified Streamly.Internal.Data.Unfold as UF
110+ (Step(..), snoc, initialize)
111+import qualified Streamly.Internal.Data.Unfold as UF (bracket)
110112import qualified Streamly.Internal.FileSystem.Handle as FH
111113import qualified Streamly.Internal.Data.Array.Stream.Foreign as AS
112114import qualified Streamly.Internal.Data.Stream.IsStream as S
@@ -405,7 +407,7 @@ writeChunks path = Fold step initial extract
405407writeWith :: (MonadIO m, MonadCatch m)
406408 => Int -> FilePath -> Fold m Word8 ()
407409writeWith n path =
408− FL.chunksOf n (writeNUnsafe n) (writeChunks path)
410+ chunksOf n (writeNUnsafe n) (writeChunks path)
409411
410412-- > write = 'writeWith' A.defaultChunkSize
411413--
src/Streamly/Internal/FileSystem/Handle.hs+7−4
@@ -130,15 +130,18 @@ import Streamly.Internal.Data.Array.Stream.Foreign (lpackArraysChunksOf)
130130-- import Streamly.String (encodeUtf8, decodeUtf8, foldLines)
131131import Streamly.Internal.System.IO (defaultChunkSize)
132132
133−import qualified Streamly.Internal.Data.Array.Unboxed as A
133+import qualified Streamly.Data.Fold as FL
134+import qualified Streamly.Data.Array.Unboxed as A
134135import qualified Streamly.Internal.Data.Array.Unboxed.Type as A
135−import qualified Streamly.Internal.Data.Array.Unboxed.Mut.Type as MArray
136+ (byteLength, asPtrUnsafe)
137+import qualified Streamly.Internal.Data.Array.Unboxed.Mut as MArray
138+ (Array(..), newPinnedArrayBytes, asPtrUnsafe)
136139import qualified Streamly.Internal.Data.Array.Stream.Foreign as AS
137140import qualified Streamly.Internal.Data.Refold.Type as Refold
138−import qualified Streamly.Internal.Data.Fold as FL
139−import qualified Streamly.Internal.Data.Fold.Type as FL
141+import qualified Streamly.Internal.Data.Fold.Type as FL(refoldMany)
140142import qualified Streamly.Internal.Data.Stream.IsStream as S
141143import qualified Streamly.Internal.Data.Stream.StreamD.Type as D
144+ (Stream(..), Step(..))
142145import qualified Streamly.Internal.Data.Unfold as UF
143146
144147-- $setup
src/Streamly/Internal/Network/Inet/TCP.hs+5−2
@@ -117,10 +117,13 @@ import Streamly.Internal.System.IO (defaultChunkSize)
117117import qualified Control.Monad.Catch as MC
118118import qualified Network.Socket as Net
119119
120−import qualified Streamly.Internal.Data.Unfold as UF
121−import qualified Streamly.Internal.Data.Array.Unboxed as A
120+import qualified Streamly.Data.Array.Unboxed as A
121+import qualified Streamly.Data.Fold as FL
122+import qualified Streamly.Data.Unfold as UF
123+import qualified Streamly.Internal.Data.Unfold as UF (bracket, first)
122124import qualified Streamly.Internal.Data.Array.Stream.Foreign as AS
123125import qualified Streamly.Internal.Data.Fold.Type as FL
126+ (initialize, snoc, Step(..))
124127import qualified Streamly.Internal.Data.Stream.IsStream as S
125128import qualified Streamly.Internal.Network.Socket as ISK
126129
src/Streamly/Internal/Network/Socket.hs+8−4
@@ -101,14 +101,18 @@ import Streamly.Internal.Data.Unfold.Type (Unfold(..))
101101-- import Streamly.String (encodeUtf8, decodeUtf8, foldLines)
102102import Streamly.Internal.System.IO (defaultChunkSize)
103103
104−import qualified Streamly.Internal.Data.Array.Unboxed as A
104+import qualified Streamly.Data.Array.Unboxed as A (read, length, writeN)
105+import qualified Streamly.Data.Fold as FL
105106import qualified Streamly.Internal.Data.Array.Unboxed.Type as A
106−import qualified Streamly.Internal.Data.Array.Unboxed.Mut.Type as MArray
107+ (unsafeFreeze, asPtrUnsafe, byteLength, writeNUnsafe)
108+import qualified Streamly.Internal.Data.Array.Unboxed.Mut as MArray
109+ (Array(..), newPinnedArrayBytes, asPtrUnsafe)
107110import qualified Streamly.Internal.Data.Array.Stream.Foreign as AS
108−import qualified Streamly.Internal.Data.Fold as FL
109111import qualified Streamly.Internal.Data.Stream.IsStream as S
110112import qualified Streamly.Internal.Data.Stream.StreamD.Type as D
111−import qualified Streamly.Internal.Data.Unfold as UF
113+ (Stream(..), Step(..))
114+import qualified Streamly.Data.Unfold as UF
115+import qualified Streamly.Internal.Data.Unfold as UF (first, map)
112116
113117-- | @'forSocketM' action socket@ runs the monadic computation @action@ passing
114118-- the socket handle to it. The handle will be closed on exit from
src/Streamly/Internal/Unicode/Array/Char.hs+5−6
@@ -18,16 +18,15 @@ module Streamly.Internal.Unicode.Array.Char
1818where
1919
2020import Control.Monad.IO.Class (MonadIO)
21−import Streamly.Prelude (MonadAsync)
22−import Prelude hiding (String, lines, words, unlines, unwords)
23−import Streamly.Internal.Data.Array.Unboxed (Array)
21+import Streamly.Data.Array.Unboxed (Array)
2422import Streamly.Internal.Data.Stream.IsStream (IsStream)
23+import Streamly.Prelude (MonadAsync)
2524
26−import qualified Streamly.Internal.Data.Array.Unboxed as A
27− (write, read)
28−
25+import qualified Streamly.Data.Array.Unboxed as A
2926import qualified Streamly.Internal.Unicode.Stream as S
3027
28+import Prelude hiding (String, lines, words, unlines, unwords)
29+
3130-- $setup
3231-- >>> :m
3332-- >>> :set -XOverloadedStrings
src/Streamly/Internal/Unicode/Char/Parser.hs+8−1
@@ -61,8 +61,15 @@ import Prelude hiding (print)
6161import Streamly.Internal.Data.Parser (Parser)
6262
6363import qualified Data.Char as Char
64+import qualified Streamly.Data.Fold as Fold
6465import qualified Streamly.Internal.Data.Parser as Parser
65−import qualified Streamly.Internal.Data.Fold as Fold
66+ (
67+ lmap
68+ , satisfy
69+ , list
70+ , takeWhile1
71+ , dropWhile
72+ )
6673
6774--------------------------------------------------------------------------------
6875-- Character classification
src/Streamly/Internal/Unicode/Stream.hs+7−6
@@ -114,14 +114,15 @@ import Streamly.Internal.Data.Unboxed (peekWith)
114114import Streamly.Internal.Data.Unfold.Type (Unfold(..))
115115import Streamly.Internal.System.IO (unsafeInlineIO)
116116
117−import qualified Streamly.Internal.Data.Fold as Fold
118−import qualified Streamly.Internal.Data.Unfold as Unfold
119−import qualified Streamly.Internal.Data.Parser as Parser
117+import qualified Streamly.Data.Fold as Fold
118+import qualified Streamly.Data.Unfold as Unfold
119+import qualified Streamly.Internal.Data.Parser as Parser (Parser)
120120import qualified Streamly.Internal.Data.Parser.ParserD as ParserD
121−import qualified Streamly.Internal.Data.Stream as Stream
121+ (Parser(..), Step(..), Initial(..), toParserK, toFold)
122+import qualified Streamly.Internal.Data.Stream as Stream (fromByteStr#)
122123import qualified Streamly.Internal.Data.Stream.Serial as Serial
123−import qualified Streamly.Internal.Data.Array.Unboxed as Array
124−import qualified Streamly.Internal.Data.Array.Unboxed.Type as A
124+import qualified Streamly.Data.Array.Unboxed as Array
125+import qualified Streamly.Internal.Data.Array.Unboxed.Type as A (Array (..))
125126import qualified Streamly.Internal.Data.Stream.IsStream as S
126127import qualified Streamly.Internal.Data.Stream.StreamD as D
127128
src/Streamly/Internal/Unicode/String.hs+2−1
@@ -41,8 +41,9 @@ import Streamly.Internal.Data.Parser (Parser)
4141import Language.Haskell.TH
4242import Language.Haskell.TH.Quote
4343
44−import qualified Streamly.Internal.Data.Fold as Fold
44+import qualified Streamly.Data.Fold as Fold
4545import qualified Streamly.Internal.Data.Parser as Parser
46+ (some, many, takeWhile1)
4647import qualified Streamly.Internal.Data.Stream.IsStream as Stream
4748import qualified Streamly.Internal.Unicode.Char.Parser as Parser
4849
src/Streamly/Internal/Unicode/Utf8.hs+2−2
@@ -24,10 +24,10 @@ where
2424
2525import Control.DeepSeq (NFData)
2626import Data.Word (Word8)
27−import Streamly.Internal.Data.Array.Unboxed.Type (Array)
27+import Streamly.Data.Array.Unboxed (Array)
2828import System.IO.Unsafe (unsafePerformIO)
2929
30−import qualified Streamly.Internal.Data.Array.Unboxed as Array
30+import qualified Streamly.Internal.Data.Array.Unboxed as Array (fromStreamN, toStream)
3131import qualified Streamly.Internal.Data.Stream.IsStream as Stream
3232import qualified Streamly.Internal.Unicode.Stream as Unicode
3333