@@ -16,6 +16,8 @@ module Streamly.Internal.Data.Stream.Cross
1616 )
1717where
1818
19+import Control.Monad.Catch (MonadThrow, throwM)
20+import Control.Monad.Trans.Class (MonadTrans(lift))
1921import Control.Applicative (liftA2)
2022import Control.Monad.IO.Class (MonadIO(..))
2123import Data.Functor.Identity (Identity(..))
@@ -133,3 +135,10 @@ instance Monad m => Monad (CrossStream m) where
133135
134136instance (MonadIO m) => MonadIO (CrossStream m) where
135137 liftIO x = CrossStream (Stream.fromEffect $ liftIO x)
138+
139+instance MonadTrans CrossStream where
140+ {-# INLINE lift #-}
141+ lift x = CrossStream (Stream.fromEffect x)
142+
143+instance (MonadThrow m) => MonadThrow (CrossStream m) where
144+ throwM = lift . throwM