on master help sign in
Add drain API to Serial module
commitba8833d7012118c765e73eee9db21cb799d8b564 authorRanjeet Kumar Ranjan <ranjeetr@composewell.com> dateFri 6 May 2022, 13:27 (4 years ago) parent45e34b0
2 files changed+7−3
benchmark/lib/Streamly/Benchmark/Common.hs+2−3 core/src/Streamly/Internal/Data/Stream/Serial.hs+5
benchmark/lib/Streamly/Benchmark/Common.hs+2−3
@@ -53,9 +53,8 @@ import Control.DeepSeq (NFData(..))
5353import Data.Functor.Identity (Identity, runIdentity)
5454import System.Random (randomRIO)
5555
56−import qualified Streamly.Prelude as S
56+import qualified Streamly.Internal.Data.Stream.Serial as S
5757
58−import Streamly.Prelude (SerialT)
5958import Gauge
6059
6160-------------------------------------------------------------------------------
@@ -107,7 +106,7 @@ benchPureSink1 name f =
107106 bench name $ nfIO $ randomRIO (1,1) >>= return . runIdentity . f
108107
109108{-# INLINE benchPureSrc #-}
110−benchPureSrc :: String -> (Int -> SerialT Identity a) -> Benchmark
109+benchPureSrc :: String -> (Int -> S.SerialT Identity a) -> Benchmark
111110benchPureSrc name src = benchPure name src (runIdentity . S.drain)
112111
113112-------------------------------------------------------------------------------
core/src/Streamly/Internal/Data/Stream/Serial.hs+5
@@ -32,6 +32,7 @@ module Streamly.Internal.Data.Stream.Serial
3232 -- * Elimination
3333 , toList
3434 , foldWith
35+ , drain
3536
3637 -- * Transformation
3738 , map
@@ -341,3 +342,7 @@ list = fromStreamD . D.fromList
341342{-# INLINE unfoldrM #-}
342343unfoldrM :: Monad m => (b -> m (Maybe (a, b))) -> b -> SerialT m a
343344unfoldrM step seed = SerialT $ D.toStreamK (D.unfoldrM step seed)
345+
346+{-# INLINE drain #-}
347+drain :: Monad m => SerialT m a -> m ()
348+drain (SerialT m) = P.drain m