module Control.Monad.Trans.Error
( mapErrorT
, module Control.Monad.Trans.Error.Class
) where
import Control.Monad.Raise
import Control.Monad.Rescue.Constraint
import Control.Monad.Trans.Error.Class
import Data.WorldPeace
mapErrorT
:: ( MonadTransError t sourceErrs m
, MonadRaise (t targetErrs m)
, CheckErrors (t targetErrs m)
)
=> (OpenUnion (Errors (t sourceErrs m)) -> OpenUnion (Errors (t targetErrs m)))
-> t sourceErrs m a
-> t targetErrs m a
mapErrorT :: (OpenUnion (Errors (t sourceErrs m))
-> OpenUnion (Errors (t targetErrs m)))
-> t sourceErrs m a -> t targetErrs m a
mapErrorT OpenUnion (Errors (t sourceErrs m))
-> OpenUnion (Errors (t targetErrs m))
f = (OpenUnion (Errors (t sourceErrs m)) -> t targetErrs m a)
-> t sourceErrs m a -> t targetErrs m a
forall (t :: [*] -> (* -> *) -> * -> *) (sourceErrs :: [*])
(m :: * -> *) (targetErrs :: [*]) a.
MonadTransError t sourceErrs m =>
(OpenUnion (Errors (t sourceErrs m)) -> t targetErrs m a)
-> t sourceErrs m a -> t targetErrs m a
onRaise (OpenUnion (Errors (t targetErrs m)) -> t targetErrs m a
forall (m :: * -> *) err a.
(MonadRaise m, Subset err (ErrorCase m)) =>
err -> m a
raise (OpenUnion (Errors (t targetErrs m)) -> t targetErrs m a)
-> (OpenUnion (Errors (t sourceErrs m))
-> OpenUnion (Errors (t targetErrs m)))
-> OpenUnion (Errors (t sourceErrs m))
-> t targetErrs m a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. OpenUnion (Errors (t sourceErrs m))
-> OpenUnion (Errors (t targetErrs m))
f)