@@ -77,15 +77,12 @@ module Streamly.Streams
79 -- * Running Streams
79 -- * Running Streams
81 , runStreamT -- deprecated
80 , runStreamT -- deprecated
82− , runInterleavedT
81+ , runInterleavedT -- deprecated
84 , runAsyncT -- deprecated
82 , runAsyncT -- deprecated
85− , runParallelT
83+ , runParallelT -- deprecated
87 , runZipStream -- deprecated
84 , runZipStream -- deprecated
88− , runZipAsync
85+ , runZipAsync -- deprecated
90 -- * Zipping
87 -- * Zipping
@@ -274,7 +271,7 @@ async m = do
274-- element of the stream, serially.
271-- element of the stream, serially.
277−-- main = 'runSerialT' $ do
274+-- main = 'runStream' . 'serially' $ do
278-- x <- return 1 \<\> return 2
275-- x <- return 1 \<\> return 2
279-- liftIO $ print x
276-- liftIO $ print x
@@ -286,7 +283,7 @@ async m = do
286-- 'SerialT' nests streams serially in a depth first manner.
283-- 'SerialT' nests streams serially in a depth first manner.
289−-- main = 'runSerialT' $ do
286+-- main = 'runStream' . 'serially' $ do
290-- x <- return 1 \<\> return 2
287-- x <- return 1 \<\> return 2
291-- y <- return 3 \<\> return 4
288-- y <- return 3 \<\> return 4
292-- liftIO $ print (x, y)
289-- liftIO $ print (x, y)
@@ -304,6 +301,8 @@ async m = do
304-- nested @for@ loops and the monadic continuation is the body of the loop. The
301-- nested @for@ loops and the monadic continuation is the body of the loop. The
305-- loop iterates for all elements of the stream.
302-- loop iterates for all elements of the stream.
304+-- The 'serially' combinator can be omitted as the default stream type is
307-- Note that serial composition can be used to combine an infinite number of
306-- Note that serial composition can be used to combine an infinite number of
308-- streams as it explores only one stream at a time.
307-- streams as it explores only one stream at a time.
@@ -334,9 +333,9 @@ type StreamT = SerialT
334-- Semigroup
333-- Semigroup
335------------------------------------------------------------------------------
334------------------------------------------------------------------------------
337−-- | Same as the 'Semigroup' instance of 'SerialT'. Appends two streams
336+-- | Polymorphic version of the 'Semigroup' operation '<>' of 'SerialT'.
338−-- sequentially, yielding all elements from the first stream, and then all
337+-- Appends two streams sequentially, yielding all elements from the first
339−-- elements from the second stream.
338+-- stream, and then all elements from the second stream.
340{-# INLINE append #-}
339{-# INLINE append #-}
341append :: IsStream t => t m a -> t m a -> t m a
340append :: IsStream t => t m a -> t m a -> t m a
342append m1 m2 = fromStream $ S.append (toStream m1) (toStream m2)
341append m1 m2 = fromStream $ S.append (toStream m1) (toStream m2)
@@ -435,7 +434,7 @@ instance (Monad m, Floating a) => Floating (SerialT m a) where
438−-- main = 'runInterleavedT' $ do
437+-- main = 'runStream' . 'interleaving' $ do
439-- x <- return 1 \<\> return 2
438-- x <- return 1 \<\> return 2
440-- y <- return 3 \<\> return 4
439-- y <- return 3 \<\> return 4
441-- liftIO $ print (x, y)
440-- liftIO $ print (x, y)
@@ -468,8 +467,8 @@ instance IsStream InterleavedT where
468-- Semigroup
467-- Semigroup
469------------------------------------------------------------------------------
468------------------------------------------------------------------------------
471−-- | Same as the 'Semigroup' instance of 'InterleavedT'. Interleaves two
470+-- | Polymorphic version of the 'Semigroup' operation '<>' of 'InterleavedT'.
472−-- streams, yielding one element from each stream alternately.
471+-- Interleaves two streams, yielding one element from each stream alternately.
473{-# INLINE interleave #-}
472{-# INLINE interleave #-}
474interleave :: IsStream t => t m a -> t m a -> t m a
473interleave :: IsStream t => t m a -> t m a -> t m a
475interleave m1 m2 = fromStream $ S.interleave (toStream m1) (toStream m2)
474interleave m1 m2 = fromStream $ S.interleave (toStream m1) (toStream m2)
@@ -586,7 +585,7 @@ instance (Monad m, Floating a) => Floating (InterleavedT m a) where
586-- import "Streamly"
585-- import "Streamly"
587-- import Control.Concurrent
586-- import Control.Concurrent
589−-- main = 'runAParallelT' $ do
588+-- main = 'runStream' . 'aparallely' $ do
590-- n <- return 3 \<\> return 2 \<\> return 1
589-- n <- return 3 \<\> return 2 \<\> return 1
591-- liftIO $ do
590-- liftIO $ do
592-- threadDelay (n * 1000000)
591-- threadDelay (n * 1000000)
@@ -627,9 +626,9 @@ instance IsStream AParallelT where
627-- Semigroup
626-- Semigroup
628------------------------------------------------------------------------------
627------------------------------------------------------------------------------
630−-- | Same as the 'Semigroup' operation of 'AParallelT', but polymorphic.
629+-- | Polymorphic version of the 'Semigroup' operation '<>' of 'AParallelT', but
631−-- Merges two streams possibly concurrently, preferring the elements from the
630+-- polymorphic. Merges two streams possibly concurrently, preferring the
632−-- left one when available.
631+-- elements from the left one when available.
633{-# INLINE aparallel #-}
632{-# INLINE aparallel #-}
634aparallel :: (IsStream t, MonadAsync m) => t m a -> t m a -> t m a
633aparallel :: (IsStream t, MonadAsync m) => t m a -> t m a -> t m a
635aparallel m1 m2 = fromStream $ S.aparallel (toStream m1) (toStream m2)
634aparallel m1 m2 = fromStream $ S.aparallel (toStream m1) (toStream m2)
@@ -753,7 +752,7 @@ instance (MonadAsync m, Floating a) => Floating (AParallelT m a) where
753-- import "Streamly"
752-- import "Streamly"
754-- import Control.Concurrent
753-- import Control.Concurrent
756−-- main = 'runParallelT' $ do
755+-- main = 'runStream' . 'parallely' $ do
757-- n <- return 3 \<\> return 2 \<\> return 1
756-- n <- return 3 \<\> return 2 \<\> return 1
758-- liftIO $ do
757-- liftIO $ do
759-- threadDelay (n * 1000000)
758-- threadDelay (n * 1000000)
@@ -792,8 +791,8 @@ instance IsStream ParallelT where
792-- Semigroup
791-- Semigroup
793------------------------------------------------------------------------------
792------------------------------------------------------------------------------
795−-- | Same as the 'Semigroup' instance of 'ParallelT'. Merges two streams
794+-- | Polymorphic version of the 'Semigroup' operation '<>' of 'ParallelT'.
796−-- concurrently choosing elements from both fairly.
795+-- Merges two streams concurrently choosing elements from both fairly.
797{-# INLINE parallel #-}
796{-# INLINE parallel #-}
798parallel :: (IsStream t, MonadAsync m) => t m a -> t m a -> t m a
797parallel :: (IsStream t, MonadAsync m) => t m a -> t m a -> t m a
799parallel m1 m2 = fromStream $ S.parallel (toStream m1) (toStream m2)
798parallel m1 m2 = fromStream $ S.parallel (toStream m1) (toStream m2)
@@ -1066,19 +1065,19 @@ instance (MonadAsync m, Floating a) => Floating (ZipAsync m a) where
1066-- Type adapting combinators
1065-- Type adapting combinators
1067-------------------------------------------------------------------------------
1066-------------------------------------------------------------------------------
1069−-- | Adapt one streaming type to another.
1068+-- | Adapt any specific stream type to any other specific stream type.
1070adapt :: (IsStream t1, IsStream t2) => t1 m a -> t2 m a
1069adapt :: (IsStream t1, IsStream t2) => t1 m a -> t2 m a
1071adapt = fromStream . toStream
1070adapt = fromStream . toStream
1073−-- | Interpret an ambiguously typed stream as 'SerialT'.
1072+-- | Fix the type of a polymorphic stream as 'SerialT'.
1074serially :: IsStream t => SerialT m a -> t m a
1073serially :: IsStream t => SerialT m a -> t m a
1075serially = adapt
1074serially = adapt
1077−-- | Interpret an ambiguously typed stream as 'InterleavedT'.
1076+-- | Fix the type of a polymorphic stream as 'InterleavedT'.
1078interleaving :: IsStream t => InterleavedT m a -> t m a
1077interleaving :: IsStream t => InterleavedT m a -> t m a
1079interleaving = adapt
1078interleaving = adapt
1081−-- | Interpret an ambiguously typed stream as 'AParallelT'.
1080+-- | Fix the type of a polymorphic stream as 'AParallelT'.
1082aparallely :: IsStream t => AParallelT m a -> t m a
1081aparallely :: IsStream t => AParallelT m a -> t m a
1083aparallely = adapt
1082aparallely = adapt
@@ -1087,15 +1086,15 @@ aparallely = adapt
1087asyncly :: IsStream t => AParallelT m a -> t m a
1086asyncly :: IsStream t => AParallelT m a -> t m a
1088asyncly = aparallely
1087asyncly = aparallely
1090−-- | Interpret an ambiguously typed stream as 'ParallelT'.
1089+-- | Fix the type of a polymorphic stream as 'ParallelT'.
1091parallely :: IsStream t => ParallelT m a -> t m a
1090parallely :: IsStream t => ParallelT m a -> t m a
1092parallely = adapt
1091parallely = adapt
1094−-- | Interpret an ambiguously typed stream as 'ZipSerial'.
1093+-- | Fix the type of a polymorphic stream as 'ZipSerial'.
1095zipping :: IsStream t => ZipSerial m a -> t m a
1094zipping :: IsStream t => ZipSerial m a -> t m a
1096zipping = adapt
1095zipping = adapt
1098−-- | Interpret an ambiguously typed stream as 'ZipAsync'.
1097+-- | Fix the type of a polymorphic stream as 'ZipAsync'.
1099zippingAsync :: IsStream t => ZipAsync m a -> t m a
1098zippingAsync :: IsStream t => ZipAsync m a -> t m a
1100zippingAsync = adapt
1099zippingAsync = adapt
@@ -1103,42 +1102,33 @@ zippingAsync = adapt
1103-- Running Streams, convenience functions specialized to types
1102-- Running Streams, convenience functions specialized to types
1104-------------------------------------------------------------------------------
1103-------------------------------------------------------------------------------
1106−-- | Same as @runStream . serially@.
1105+-- | Same as @runStream@.
1107−runSerialT :: Monad m => SerialT m a -> m ()
1108−runSerialT = runStream
1110−-- | Same as @runSerialT@.
1111−{-# Deprecated runStreamT "Please use runSerialT instead." #-}
1106+{-# DEPRECATED runStreamT "Please use runStream instead." #-}
1112runStreamT :: Monad m => SerialT m a -> m ()
1107runStreamT :: Monad m => SerialT m a -> m ()
1113−runStreamT = runSerialT
1108+runStreamT = runStream
1115-- | Same as @runStream . interleaving@.
1110-- | Same as @runStream . interleaving@.
1111+{-# DEPRECATED runInterleavedT "Please use 'runStream . interleaving' instead." #-}
1116runInterleavedT :: Monad m => InterleavedT m a -> m ()
1112runInterleavedT :: Monad m => InterleavedT m a -> m ()
1117runInterleavedT = runStream . interleaving
1113runInterleavedT = runStream . interleaving
1119-- | Same as @runStream . aparallely@.
1115-- | Same as @runStream . aparallely@.
1120−runAParallelT :: Monad m => AParallelT m a -> m ()
1121−runAParallelT = runStream . aparallely
1123−-- | Same as @runAParallelT@.
1124−{-# Deprecated runAsyncT "Please use runAParallelT instead." #-}
1116+{-# DEPRECATED runAsyncT "Please use 'runStream . aparallely' instead." #-}
1125runAsyncT :: Monad m => AParallelT m a -> m ()
1117runAsyncT :: Monad m => AParallelT m a -> m ()
1126−runAsyncT = runAParallelT
1118+runAsyncT = runStream . aparallely
1128-- | Same as @runStream . parallely@.
1120-- | Same as @runStream . parallely@.
1121+{-# DEPRECATED runParallelT "Please use 'runStream . parallely' instead." #-}
1129runParallelT :: Monad m => ParallelT m a -> m ()
1122runParallelT :: Monad m => ParallelT m a -> m ()
1130runParallelT = runStream . parallely
1123runParallelT = runStream . parallely
1132-- | Same as @runStream . zipping@.
1125-- | Same as @runStream . zipping@.
1133−runZipSerial :: Monad m => ZipSerial m a -> m ()
1134−runZipSerial = runStream . zipping
1136−{-# Deprecated runZipStream "Please use runZipSerial instead." #-}
1126+{-# DEPRECATED runZipStream "Please use 'runStream . zipping instead." #-}
1137−-- | Same as ZipSerial.
1138runZipStream :: Monad m => ZipSerial m a -> m ()
1127runZipStream :: Monad m => ZipSerial m a -> m ()
1139−runZipStream = runZipSerial
1128+runZipStream = runStream . zipping
1141-- | Same as @runStream . zippingAsync@.
1130-- | Same as @runStream . zippingAsync@.
1131+{-# DEPRECATED runZipAsync "Please use 'runStream . zippingAsync instead." #-}
1142runZipAsync :: Monad m => ZipAsync m a -> m ()
1132runZipAsync :: Monad m => ZipAsync m a -> m ()
1143runZipAsync = runStream . zippingAsync
1133runZipAsync = runStream . zippingAsync