@@ -420,6 +420,7 @@ module Streamly.Internal.Prelude
420420 , evalStateT
421421 , usingStateT
422422 , runStateT
423+ , usingReaderT
423424
424425 -- * MonadFix
425426 , K.mfix
@@ -4487,3 +4488,16 @@ usingStateT s f xs = evalStateT s $ f $ liftInner xs
44874488{-# INLINE runStateT #-}
44884489runStateT :: Monad m => s -> SerialT (StateT s m) a -> SerialT m (s, a)
44894490runStateT 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