on master help sign in
Add MonadTrans and MonadThrow instances to CrossStream
9bc0388Harendra Kumar
core/src/Streamly/Internal/Data/Stream/Cross.hs+9
@@ -16,6 +16,8 @@ module Streamly.Internal.Data.Stream.Cross
16 )
16 )
17where
17where
18
18
19+import Control.Monad.Catch (MonadThrow, throwM)
20+import Control.Monad.Trans.Class (MonadTrans(lift))
19import Control.Applicative (liftA2)
21import Control.Applicative (liftA2)
20import Control.Monad.IO.Class (MonadIO(..))
22import Control.Monad.IO.Class (MonadIO(..))
21import Data.Functor.Identity (Identity(..))
23import Data.Functor.Identity (Identity(..))
@@ -133,3 +135,10 @@ instance Monad m => Monad (CrossStream m) where
133
135
134instance (MonadIO m) => MonadIO (CrossStream m) where
136instance (MonadIO m) => MonadIO (CrossStream m) where
135 liftIO x = CrossStream (Stream.fromEffect $ liftIO x)
137 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