{-# LANGUAGE CPP #-}
module UnexceptionalIO.Trans (
UIO.UIO,
UIO.Unexceptional(..),
fromIO,
#ifdef __GLASGOW_HASKELL__
fromIO',
#endif
run,
runExceptIO,
UIO.unsafeFromIO,
UIO.SomeNonPseudoException,
#ifdef __GLASGOW_HASKELL__
UIO.PseudoException(..),
UIO.ProgrammerError(..),
UIO.ExternalError(..),
UIO.bracket,
#if MIN_VERSION_base(4,6,0)
UIO.forkFinally,
UIO.fork,
UIO.ChildThreadError(..)
#endif
#endif
) where
import Control.Exception (Exception)
import Control.Monad.IO.Class (MonadIO(..))
#if MIN_VERSION_transformers(0,5,3)
import qualified Control.Monad.Trans.Accum as Trans
#endif
import qualified Control.Monad.Trans.Class as Trans
import qualified Control.Monad.Trans.Cont as Trans
import qualified Control.Monad.Trans.Except as Trans
import qualified Control.Monad.Trans.Identity as Trans
import qualified Control.Monad.Trans.Maybe as Trans
import qualified Control.Monad.Trans.RWS.Lazy as RWSL
import qualified Control.Monad.Trans.RWS.Strict as RWSS
import qualified Control.Monad.Trans.Reader as Trans
#if MIN_VERSION_transformers(0,5,3)
import qualified Control.Monad.Trans.Select as Trans
#endif
import qualified Control.Monad.Trans.State.Lazy as StateL
import qualified Control.Monad.Trans.State.Strict as StateS
import qualified Control.Monad.Trans.Writer.Lazy as WriterL
import qualified Control.Monad.Trans.Writer.Strict as WriterS
import qualified UnexceptionalIO as UIO
fromIO :: (UIO.Unexceptional m) => IO a -> Trans.ExceptT UIO.SomeNonPseudoException m a
fromIO :: forall (m :: * -> *) a.
Unexceptional m =>
IO a -> ExceptT SomeNonPseudoException m a
fromIO = forall e (m :: * -> *) a. m (Either e a) -> ExceptT e m a
Trans.ExceptT forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (m :: * -> *) a.
Unexceptional m =>
IO a -> m (Either SomeNonPseudoException a)
UIO.fromIO
fromIO' :: (Exception e, UIO.Unexceptional m) =>
(UIO.SomeNonPseudoException -> e)
-> IO a
-> Trans.ExceptT e m a
fromIO' :: forall e (m :: * -> *) a.
(Exception e, Unexceptional m) =>
(SomeNonPseudoException -> e) -> IO a -> ExceptT e m a
fromIO' SomeNonPseudoException -> e
f = forall e (m :: * -> *) a. m (Either e a) -> ExceptT e m a
Trans.ExceptT forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall e (m :: * -> *) a.
(Exception e, Unexceptional m) =>
(SomeNonPseudoException -> e) -> IO a -> m (Either e a)
UIO.fromIO' SomeNonPseudoException -> e
f
run :: (MonadIO m) => UIO.UIO a -> m a
run :: forall (m :: * -> *) a. MonadIO m => UIO a -> m a
run = forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. UIO a -> IO a
UIO.run
runExceptIO :: (Exception e, MonadIO m) => Trans.ExceptT e UIO.UIO a -> m a
runExceptIO :: forall e (m :: * -> *) a.
(Exception e, MonadIO m) =>
ExceptT e UIO a -> m a
runExceptIO = forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall e a. Exception e => UIO (Either e a) -> IO a
UIO.runEitherIO forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall e (m :: * -> *) a. ExceptT e m a -> m (Either e a)
Trans.runExceptT
#if MIN_VERSION_transformers(0,5,3)
instance (UIO.Unexceptional m, Monoid w) => UIO.Unexceptional (Trans.AccumT w m) where
lift :: forall a. UIO a -> AccumT w m a
lift = forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
Trans.lift forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (m :: * -> *) a. Unexceptional m => UIO a -> m a
UIO.lift
#endif
instance (UIO.Unexceptional m) => UIO.Unexceptional (Trans.ContT r m) where
lift :: forall a. UIO a -> ContT r m a
lift = forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
Trans.lift forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (m :: * -> *) a. Unexceptional m => UIO a -> m a
UIO.lift
instance (UIO.Unexceptional m) => UIO.Unexceptional (Trans.ExceptT e m) where
lift :: forall a. UIO a -> ExceptT e m a
lift = forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
Trans.lift forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (m :: * -> *) a. Unexceptional m => UIO a -> m a
UIO.lift
instance (UIO.Unexceptional m) => UIO.Unexceptional (Trans.IdentityT m) where
lift :: forall a. UIO a -> IdentityT m a
lift = forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
Trans.lift forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (m :: * -> *) a. Unexceptional m => UIO a -> m a
UIO.lift
instance (UIO.Unexceptional m) => UIO.Unexceptional (Trans.MaybeT m) where
lift :: forall a. UIO a -> MaybeT m a
lift = forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
Trans.lift forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (m :: * -> *) a. Unexceptional m => UIO a -> m a
UIO.lift
instance (UIO.Unexceptional m, Monoid w) => UIO.Unexceptional (RWSL.RWST r w s m) where
lift :: forall a. UIO a -> RWST r w s m a
lift = forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
Trans.lift forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (m :: * -> *) a. Unexceptional m => UIO a -> m a
UIO.lift
instance (UIO.Unexceptional m, Monoid w) => UIO.Unexceptional (RWSS.RWST r w s m) where
lift :: forall a. UIO a -> RWST r w s m a
lift = forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
Trans.lift forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (m :: * -> *) a. Unexceptional m => UIO a -> m a
UIO.lift
instance (UIO.Unexceptional m) => UIO.Unexceptional (Trans.ReaderT r m) where
lift :: forall a. UIO a -> ReaderT r m a
lift = forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
Trans.lift forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (m :: * -> *) a. Unexceptional m => UIO a -> m a
UIO.lift
#if MIN_VERSION_transformers(0,5,3)
instance (UIO.Unexceptional m) => UIO.Unexceptional (Trans.SelectT r m) where
lift :: forall a. UIO a -> SelectT r m a
lift = forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
Trans.lift forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (m :: * -> *) a. Unexceptional m => UIO a -> m a
UIO.lift
#endif
instance (UIO.Unexceptional m) => UIO.Unexceptional (StateL.StateT s m) where
lift :: forall a. UIO a -> StateT s m a
lift = forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
Trans.lift forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (m :: * -> *) a. Unexceptional m => UIO a -> m a
UIO.lift
instance (UIO.Unexceptional m) => UIO.Unexceptional (StateS.StateT s m) where
lift :: forall a. UIO a -> StateT s m a
lift = forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
Trans.lift forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (m :: * -> *) a. Unexceptional m => UIO a -> m a
UIO.lift
instance (UIO.Unexceptional m, Monoid w) => UIO.Unexceptional (WriterL.WriterT w m) where
lift :: forall a. UIO a -> WriterT w m a
lift = forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
Trans.lift forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (m :: * -> *) a. Unexceptional m => UIO a -> m a
UIO.lift
instance (UIO.Unexceptional m, Monoid w) => UIO.Unexceptional (WriterS.WriterT w m) where
lift :: forall a. UIO a -> WriterT w m a
lift = forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
Trans.lift forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (m :: * -> *) a. Unexceptional m => UIO a -> m a
UIO.lift