monad-abort-fd-0.5: A better error monad transformer

Safe HaskellNone
LanguageHaskell98

Control.Monad.Finish

Documentation

class Monad μ => MonadFinish f μ | μ -> f where Source #

Minimal complete definition

finish

Methods

finish :: f -> μ α Source #

Instances

MonadFinish f μ => MonadFinish f (ListT μ) Source # 

Methods

finish :: f -> ListT μ α Source #

MonadFinish f μ => MonadFinish f (MaybeT μ) Source # 

Methods

finish :: f -> MaybeT μ α Source #

(MonadFinish f μ, Monoid w) => MonadFinish f (WriterT w μ) Source # 

Methods

finish :: f -> WriterT w μ α Source #

(MonadFinish f μ, Monoid w) => MonadFinish f (WriterT w μ) Source # 

Methods

finish :: f -> WriterT w μ α Source #

MonadFinish f μ => MonadFinish f (StateT s μ) Source # 

Methods

finish :: f -> StateT s μ α Source #

MonadFinish f μ => MonadFinish f (StateT s μ) Source # 

Methods

finish :: f -> StateT s μ α Source #

MonadFinish f μ => MonadFinish f (AbortT e μ) Source # 

Methods

finish :: f -> AbortT e μ α Source #

MonadFinish f μ => MonadFinish f (ExceptT e μ) Source # 

Methods

finish :: f -> ExceptT e μ α Source #

(MonadFinish f μ, Error e) => MonadFinish f (ErrorT e μ) Source # 

Methods

finish :: f -> ErrorT e μ α Source #

MonadFinish f μ => MonadFinish f (IdentityT * μ) Source # 

Methods

finish :: f -> IdentityT * μ α Source #

Monad μ => MonadFinish f (FinishT f μ) Source # 

Methods

finish :: f -> FinishT f μ α Source #

MonadFinish f μ => MonadFinish f (ReaderT * r μ) Source # 

Methods

finish :: f -> ReaderT * r μ α Source #

MonadFinish f μ => MonadFinish f (ContT * r μ) Source # 

Methods

finish :: f -> ContT * r μ α Source #

(MonadFinish f μ, Monoid w) => MonadFinish f (RWST r w s μ) Source # 

Methods

finish :: f -> RWST r w s μ α Source #

(MonadFinish f μ, Monoid w) => MonadFinish f (RWST r w s μ) Source # 

Methods

finish :: f -> RWST r w s μ α Source #

type Finish f α = FinishT f Identity α #

runFinish :: Finish f α -> Either f α #

runFinish' :: Finish α α -> α #

newtype FinishT f μ α :: * -> (* -> *) -> * -> * #

Constructors

FinishT 

Fields

Instances

MonadBase η μ => MonadBase η (FinishT f μ) 

Methods

liftBase :: η α -> FinishT f μ α #

MonadBaseControl η μ => MonadBaseControl η (FinishT e μ) 

Associated Types

type StM (FinishT e μ :: * -> *) a :: * #

Methods

liftBaseWith :: (RunInBase (FinishT e μ) η -> η a) -> FinishT e μ a #

restoreM :: StM (FinishT e μ) a -> FinishT e μ a #

MonadMask m μ => MonadMask m (FinishT β μ) Source # 

Methods

defMaskingState :: Proxy (* -> *) (FinishT β μ) -> m Source #

getMaskingState :: FinishT β μ m Source #

setMaskingState :: m -> FinishT β μ α -> FinishT β μ α Source #

Monad μ => MonadFinish f (FinishT f μ) Source # 

Methods

finish :: f -> FinishT f μ α Source #

MonadTrans (FinishT f) 

Methods

lift :: Monad m => m a -> FinishT f m a #

MonadTransControl (FinishT f) 

Associated Types

type StT (FinishT f :: (* -> *) -> * -> *) a :: * #

Methods

liftWith :: Monad m => (Run (FinishT f) -> m a) -> FinishT f m a #

restoreT :: Monad m => m (StT (FinishT f) a) -> FinishT f m a #

BindTrans (FinishT f) 

Methods

liftB :: Bind b => b a -> FinishT f b a #

Monad μ => Monad (FinishT f μ) 

Methods

(>>=) :: FinishT f μ a -> (a -> FinishT f μ b) -> FinishT f μ b #

(>>) :: FinishT f μ a -> FinishT f μ b -> FinishT f μ b #

return :: a -> FinishT f μ a #

fail :: String -> FinishT f μ a #

Functor μ => Functor (FinishT f μ) 

Methods

fmap :: (a -> b) -> FinishT f μ a -> FinishT f μ b #

(<$) :: a -> FinishT f μ b -> FinishT f μ a #

MonadFix μ => MonadFix (FinishT f μ) 

Methods

mfix :: (a -> FinishT f μ a) -> FinishT f μ a #

(Functor μ, Monad μ) => Applicative (FinishT f μ) 

Methods

pure :: a -> FinishT f μ a #

(<*>) :: FinishT f μ (a -> b) -> FinishT f μ a -> FinishT f μ b #

(*>) :: FinishT f μ a -> FinishT f μ b -> FinishT f μ b #

(<*) :: FinishT f μ a -> FinishT f μ b -> FinishT f μ a #

MonadIO μ => MonadIO (FinishT f μ) 

Methods

liftIO :: IO a -> FinishT f μ a #

Monad μ => Pointed (FinishT f μ) 

Methods

point :: a -> FinishT f μ a #

(Functor μ, Monad μ) => Apply (FinishT f μ) 

Methods

(<.>) :: FinishT f μ (a -> b) -> FinishT f μ a -> FinishT f μ b #

(.>) :: FinishT f μ a -> FinishT f μ b -> FinishT f μ b #

(<.) :: FinishT f μ a -> FinishT f μ b -> FinishT f μ a #

(Functor μ, Monad μ) => Bind (FinishT f μ) 

Methods

(>>-) :: FinishT f μ a -> (a -> FinishT f μ b) -> FinishT f μ b #

join :: FinishT f μ (FinishT f μ a) -> FinishT f μ a #

MonadFinally μ => MonadFinally (FinishT β μ) Source # 

Methods

finally' :: FinishT β μ α -> (Maybe α -> FinishT β μ β) -> FinishT β μ (α, β) Source #

finally :: FinishT β μ α -> FinishT β μ β -> FinishT β μ α Source #

type StT (FinishT f) α 
type StT (FinishT f) α = Either f α
type StM (FinishT e μ) α 
type StM (FinishT e μ) α = ComposeSt (FinishT e) μ α

runFinishT' :: Monad μ => FinishT α μ α -> μ α #