transformers-continue-0.0.1: Control flow data type and monad transformer.

Safe HaskellSafe
LanguageHaskell98

Control.Monad.Trans.Continue

Contents

Description

This monad transformer extends a monad with the ability to handle multiple terminating cases.

A sequence of actions terminates normally, producing a value, only if none of the actions in the sequence are Stop or Failure. If one action is Stop or Failure, the rest of the sequence is skipped and the composite action exits with that result.

Synopsis

ContinueT

newtype ContinueT x m a Source #

A monad transfomer that extends the Continue monad.

Computations are stopes, failures or normal values.

The return function returns a normal value, while >>= exits on the first stop or failure.

Constructors

ContinueT 

Fields

Instances

MonadTrans (ContinueT x) Source # 

Methods

lift :: Monad m => m a -> ContinueT x m a #

Monad m => Monad (ContinueT x m) Source # 

Methods

(>>=) :: ContinueT x m a -> (a -> ContinueT x m b) -> ContinueT x m b #

(>>) :: ContinueT x m a -> ContinueT x m b -> ContinueT x m b #

return :: a -> ContinueT x m a #

fail :: String -> ContinueT x m a #

Functor m => Functor (ContinueT x m) Source # 

Methods

fmap :: (a -> b) -> ContinueT x m a -> ContinueT x m b #

(<$) :: a -> ContinueT x m b -> ContinueT x m a #

(Applicative m, Monad m) => Applicative (ContinueT x m) Source # 

Methods

pure :: a -> ContinueT x m a #

(<*>) :: ContinueT x m (a -> b) -> ContinueT x m a -> ContinueT x m b #

(*>) :: ContinueT x m a -> ContinueT x m b -> ContinueT x m b #

(<*) :: ContinueT x m a -> ContinueT x m b -> ContinueT x m a #

Foldable m => Foldable (ContinueT x m) Source # 

Methods

fold :: Monoid m => ContinueT x m m -> m #

foldMap :: Monoid m => (a -> m) -> ContinueT x m a -> m #

foldr :: (a -> b -> b) -> b -> ContinueT x m a -> b #

foldr' :: (a -> b -> b) -> b -> ContinueT x m a -> b #

foldl :: (b -> a -> b) -> b -> ContinueT x m a -> b #

foldl' :: (b -> a -> b) -> b -> ContinueT x m a -> b #

foldr1 :: (a -> a -> a) -> ContinueT x m a -> a #

foldl1 :: (a -> a -> a) -> ContinueT x m a -> a #

toList :: ContinueT x m a -> [a] #

null :: ContinueT x m a -> Bool #

length :: ContinueT x m a -> Int #

elem :: Eq a => a -> ContinueT x m a -> Bool #

maximum :: Ord a => ContinueT x m a -> a #

minimum :: Ord a => ContinueT x m a -> a #

sum :: Num a => ContinueT x m a -> a #

product :: Num a => ContinueT x m a -> a #

Traversable m => Traversable (ContinueT x m) Source # 

Methods

traverse :: Applicative f => (a -> f b) -> ContinueT x m a -> f (ContinueT x m b) #

sequenceA :: Applicative f => ContinueT x m (f a) -> f (ContinueT x m a) #

mapM :: Monad m => (a -> m b) -> ContinueT x m a -> m (ContinueT x m b) #

sequence :: Monad m => ContinueT x m (m a) -> m (ContinueT x m a) #

MonadIO m => MonadIO (ContinueT x m) Source # 

Methods

liftIO :: IO a -> ContinueT x m a #

failure :: Applicative m => x -> ContinueT x m a Source #

Singal a failure value x.

continue :: Applicative m => a -> ContinueT x m a Source #

Singal a continue value x.

hoistContinue :: Monad m => Continue x a -> ContinueT x m a Source #

Lift an Continue into an ContinueT

mapContinueT :: (m (Continue x a) -> n (Continue y b)) -> ContinueT x m a -> ContinueT y n b Source #

Map the unwrapped computation using the given function.

runContinueT (mapContinueT f m) = f (runContinueT m)

bimapContinueT :: Functor m => (x -> y) -> (a -> b) -> ContinueT x m a -> ContinueT y m b Source #

Map over both failure and continue.

firstContinueT :: Functor m => (x -> y) -> ContinueT x m a -> ContinueT y m a Source #

Map over failure.

secondContinueT :: Functor m => (a -> b) -> ContinueT x m a -> ContinueT x m b Source #

Map over continue.

mapFailure :: Functor m => (x -> y) -> ContinueT x m a -> ContinueT y m a Source #

Map over failure.

EitherT / ExceptT extensions

liftEitherT :: Monad m => ExceptT x m a -> ContinueT x m a Source #

Utility function for EitherT pattern synonym over ExceptT

liftExceptT :: Monad m => ExceptT x m a -> ContinueT x m a Source #

Convert an ExceptT into an ContinueT

runToEitherT :: Monad m => ContinueT x m () -> ExceptT x m () Source #

Utility function for EitherT pattern synonym over ExceptT

runToExceptT :: Monad m => ContinueT x m () -> ExceptT x m () Source #

Convert an ContinueT into an ExceptT