on master help sign in
Add replicateM to Internal.Data.Stream (#1992)
3d6e3cdRanjeet Ranjan
core/src/Streamly/Internal/Data/Stream/Generate.hs+11−1
@@ -29,6 +29,7 @@ module Streamly.Internal.Data.Stream.Generate
29 , repeat
29 , repeat
30 , repeatM
30 , repeatM
31 , replicate
31 , replicate
32+ , replicateM
32
33
33 -- * Enumeration
34 -- * Enumeration
34 , Enumerable (..)
35 , Enumerable (..)
@@ -88,7 +89,7 @@ import qualified Streamly.Internal.Data.Stream.StreamK.Type as K
88import qualified Streamly.Internal.Data.Stream.Type as Stream
89import qualified Streamly.Internal.Data.Stream.Type as Stream
89import qualified Streamly.Internal.Data.Stream.Transform as Stream (sequence)
90import qualified Streamly.Internal.Data.Stream.Transform as Stream (sequence)
90
91
91−import Prelude hiding (iterate, replicate, repeat)
92+import Prelude hiding (iterate, replicate, repeat, take)
92
93
93-- $setup
94-- $setup
94-- >>> :m
95-- >>> :m
@@ -211,6 +212,15 @@ repeatM = Stream.sequence . repeat
211replicate :: Monad m => Int -> a -> Stream m a
212replicate :: Monad m => Int -> a -> Stream m a
212replicate n = fromStreamD . D.replicate n
213replicate n = fromStreamD . D.replicate n
213
214
215+-- |
216+-- >>> replicateM n = Stream.sequence . Stream.replicate n
217+--
218+-- Generate a stream by performing a monadic action @n@ times.
219+-- /Pre-release/
220+{-# INLINE_NORMAL replicateM #-}
221+replicateM :: Monad m => Int -> m a -> Stream m a
222+replicateM n = Stream.sequence . replicate n
223+
214------------------------------------------------------------------------------
224------------------------------------------------------------------------------
215-- Time Enumeration
225-- Time Enumeration
216------------------------------------------------------------------------------
226------------------------------------------------------------------------------