@@ -27,6 +27,7 @@ module Streamly.Internal.Data.Stream.Generate
27 , Stream.fromPure
27 , Stream.fromPure
28 , Stream.fromEffect
28 , Stream.fromEffect
30 , replicate
31 , replicate
32 -- * Enumeration
33 -- * Enumeration
@@ -85,13 +86,15 @@ import qualified Streamly.Internal.Data.Stream.Bottom as Bottom
85import qualified Streamly.Internal.Data.Stream.StreamD as D
86import qualified Streamly.Internal.Data.Stream.StreamD as D
86import qualified Streamly.Internal.Data.Stream.StreamK.Type as K
87import qualified Streamly.Internal.Data.Stream.StreamK.Type as K
87import qualified Streamly.Internal.Data.Stream.Type as Stream
88import qualified Streamly.Internal.Data.Stream.Type as Stream
89+import qualified Streamly.Internal.Data.Stream.Transform as Stream (sequence)
89import Prelude hiding (iterate, replicate, repeat)
91import Prelude hiding (iterate, replicate, repeat)
93-- >>> import Control.Concurrent (threadDelay)
95-- >>> import Control.Concurrent (threadDelay)
94−-- >>> import Data.Function ((&))
96+-- >>> import Data.Function (fix, (&))
97+-- >>> import Data.Semigroup (cycle1)
95-- >>> import qualified Streamly.Data.Fold as Fold
98-- >>> import qualified Streamly.Data.Fold as Fold
96-- >>> import qualified Streamly.Data.Unfold as Unfold
99-- >>> import qualified Streamly.Data.Unfold as Unfold
97-- >>> import qualified Streamly.Internal.Data.Stream as Stream
100-- >>> import qualified Streamly.Internal.Data.Stream as Stream
@@ -178,6 +181,26 @@ unfoldrM step = fromStreamD . D.unfoldrM step
178repeat :: Monad m => a -> Stream m a
181repeat :: Monad m => a -> Stream m a
179repeat = fromStreamD . D.repeat
182repeat = fromStreamD . D.repeat
185+-- >>> repeatM = Stream.sequence . Stream.repeat
186+-- >>> repeatM = fix . Stream.consM
187+-- >>> repeatM = cycle1 . Stream.fromEffect
189+-- Generate a stream by repeatedly executing a monadic action forever.
193+-- Stream.repeatM (threadDelay 1000000 >> print 1)
195+-- & Stream.fold Fold.drain
200+{-# INLINE_NORMAL repeatM #-}
201+repeatM :: Monad m => m a -> Stream m a
202+repeatM = Stream.sequence . repeat
182-- >>> replicate n = Stream.take n . Stream.repeat
205-- >>> replicate n = Stream.take n . Stream.repeat