on master help sign in
Add usingReaderT to Streamly.Internal.Prelude.
7f97e3bPranay Sashank
src/Streamly/Internal/Prelude.hs+14
@@ -420,6 +420,7 @@ module Streamly.Internal.Prelude
420 , evalStateT
420 , evalStateT
421 , usingStateT
421 , usingStateT
422 , runStateT
422 , runStateT
423+ , usingReaderT
423
424
424 -- * MonadFix
425 -- * MonadFix
425 , K.mfix
426 , K.mfix
@@ -4487,3 +4488,16 @@ usingStateT s f xs = evalStateT s $ f $ liftInner xs
4487{-# INLINE runStateT #-}
4488{-# INLINE runStateT #-}
4488runStateT :: Monad m => s -> SerialT (StateT s m) a -> SerialT m (s, a)
4489runStateT :: Monad m => s -> SerialT (StateT s m) a -> SerialT m (s, a)
4489runStateT s xs = fromStreamD $ D.runStateT s (toStreamD xs)
4490runStateT s xs = fromStreamD $ D.runStateT s (toStreamD xs)
4491+
4492+-- | Run a stream transformation using a given environment.
4493+--
4494+-- / Internal/
4495+--
4496+{-# INLINE usingReaderT #-}
4497+usingReaderT
4498+ :: (Monad m, IsStream t)
4499+ => r
4500+ -> (t (ReaderT r m) a -> t (ReaderT r m) a)
4501+ -> t m a
4502+ -> t m a
4503+usingReaderT r f xs = runReaderT r $ f $ liftInner xs