on master help sign in
Add MonadTrans and MonadThrow instances to CrossStream
commit9bc0388b4809397261315f118d0cdf373e2cc69a authorHarendra Kumar <harendra@composewell.com> dateFri 6 Jan 2023, 10:09 (4 years ago) parentc01c7e2
1 file changed+9
core/src/Streamly/Internal/Data/Stream/Cross.hs+9
core/src/Streamly/Internal/Data/Stream/Cross.hs+9
@@ -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