monadLib-3.10.3: A collection of monad transformers.
Safe HaskellSafe
LanguageHaskell2010

MonadLib

Description

This library provides a collection of monad transformers that can be combined to produce various monads.

Synopsis

Types

The following types define the representations of the computation types supported by the library. Each type adds support for a different effect.

data Id a Source #

Computations with no effects.

Instances

Instances details
MonadFix Id Source # 
Instance details

Defined in MonadLib

Methods

mfix :: (a -> Id a) -> Id a

Applicative Id Source # 
Instance details

Defined in MonadLib

Methods

pure :: a -> Id a

(<*>) :: Id (a -> b) -> Id a -> Id b

liftA2 :: (a -> b -> c) -> Id a -> Id b -> Id c

(*>) :: Id a -> Id b -> Id b

(<*) :: Id a -> Id b -> Id a

Functor Id Source # 
Instance details

Defined in MonadLib

Methods

fmap :: (a -> b) -> Id a -> Id b #

(<$) :: a -> Id b -> Id a #

Monad Id Source # 
Instance details

Defined in MonadLib

Methods

(>>=) :: Id a -> (a -> Id b) -> Id b #

(>>) :: Id a -> Id b -> Id b #

return :: a -> Id a #

BaseM Id Id Source # 
Instance details

Defined in MonadLib

Methods

inBase :: Id a -> Id a Source #

RunM Id a a Source # 
Instance details

Defined in MonadLib

Methods

runM :: Id a -> a Source #

data Lift a Source #

Computation with no effects (strict).

Instances

Instances details
MonadFix Lift Source # 
Instance details

Defined in MonadLib

Methods

mfix :: (a -> Lift a) -> Lift a

Applicative Lift Source # 
Instance details

Defined in MonadLib

Methods

pure :: a -> Lift a

(<*>) :: Lift (a -> b) -> Lift a -> Lift b

liftA2 :: (a -> b -> c) -> Lift a -> Lift b -> Lift c

(*>) :: Lift a -> Lift b -> Lift b

(<*) :: Lift a -> Lift b -> Lift a

Functor Lift Source # 
Instance details

Defined in MonadLib

Methods

fmap :: (a -> b) -> Lift a -> Lift b #

(<$) :: a -> Lift b -> Lift a #

Monad Lift Source # 
Instance details

Defined in MonadLib

Methods

(>>=) :: Lift a -> (a -> Lift b) -> Lift b #

(>>) :: Lift a -> Lift b -> Lift b #

return :: a -> Lift a #

BaseM Lift Lift Source # 
Instance details

Defined in MonadLib

Methods

inBase :: Lift a -> Lift a Source #

RunM Lift a a Source # 
Instance details

Defined in MonadLib

Methods

runM :: Lift a -> a Source #

data IdT (m :: Type -> Type) a Source #

Adds no new features. Useful as a placeholder.

Instances

Instances details
MonadT IdT Source # 
Instance details

Defined in MonadLib

Methods

lift :: Monad m => m a -> IdT m a Source #

MonadFail m => MonadFail (IdT m) Source # 
Instance details

Defined in MonadLib

Methods

fail :: String -> IdT m a #

MonadFix m => MonadFix (IdT m) Source # 
Instance details

Defined in MonadLib

Methods

mfix :: (a -> IdT m a) -> IdT m a

MonadPlus m => Alternative (IdT m) Source # 
Instance details

Defined in MonadLib

Methods

empty :: IdT m a

(<|>) :: IdT m a -> IdT m a -> IdT m a

some :: IdT m a -> IdT m [a]

many :: IdT m a -> IdT m [a]

Monad m => Applicative (IdT m) Source # 
Instance details

Defined in MonadLib

Methods

pure :: a -> IdT m a

(<*>) :: IdT m (a -> b) -> IdT m a -> IdT m b

liftA2 :: (a -> b -> c) -> IdT m a -> IdT m b -> IdT m c

(*>) :: IdT m a -> IdT m b -> IdT m b

(<*) :: IdT m a -> IdT m b -> IdT m a

Monad m => Functor (IdT m) Source # 
Instance details

Defined in MonadLib

Methods

fmap :: (a -> b) -> IdT m a -> IdT m b #

(<$) :: a -> IdT m b -> IdT m a #

Monad m => Monad (IdT m) Source # 
Instance details

Defined in MonadLib

Methods

(>>=) :: IdT m a -> (a -> IdT m b) -> IdT m b #

(>>) :: IdT m a -> IdT m b -> IdT m b #

return :: a -> IdT m a #

MonadPlus m => MonadPlus (IdT m) Source # 
Instance details

Defined in MonadLib

Methods

mzero :: IdT m a #

mplus :: IdT m a -> IdT m a -> IdT m a #

ContM m => ContM (IdT m) Source # 
Instance details

Defined in MonadLib

Methods

callWithCC :: ((a -> Label (IdT m)) -> IdT m a) -> IdT m a Source #

AbortM m i => AbortM (IdT m) i Source # 
Instance details

Defined in MonadLib

Methods

abort :: i -> IdT m a Source #

BaseM m n => BaseM (IdT m) n Source # 
Instance details

Defined in MonadLib

Methods

inBase :: n a -> IdT m a Source #

ExceptionM m j => ExceptionM (IdT m) j Source # 
Instance details

Defined in MonadLib

Methods

raise :: j -> IdT m a Source #

ReaderM m j => ReaderM (IdT m) j Source # 
Instance details

Defined in MonadLib

Methods

ask :: IdT m j Source #

RunExceptionM m i => RunExceptionM (IdT m) i Source # 
Instance details

Defined in MonadLib

Methods

try :: IdT m a -> IdT m (Either i a) Source #

RunReaderM m j => RunReaderM (IdT m) j Source # 
Instance details

Defined in MonadLib

Methods

local :: j -> IdT m a -> IdT m a Source #

RunWriterM m j => RunWriterM (IdT m) j Source # 
Instance details

Defined in MonadLib

Methods

collect :: IdT m a -> IdT m (a, j) Source #

StateM m j => StateM (IdT m) j Source # 
Instance details

Defined in MonadLib

Methods

get :: IdT m j Source #

set :: j -> IdT m () Source #

WriterM m j => WriterM (IdT m) j Source # 
Instance details

Defined in MonadLib

Methods

put :: j -> IdT m () Source #

RunM m a r => RunM (IdT m) a r Source # 
Instance details

Defined in MonadLib

Methods

runM :: IdT m a -> r Source #

data ReaderT i (m :: Type -> Type) a Source #

Add support for propagating a context of type i.

Instances

Instances details
MonadT (ReaderT i) Source # 
Instance details

Defined in MonadLib

Methods

lift :: Monad m => m a -> ReaderT i m a Source #

MonadFail m => MonadFail (ReaderT i m) Source # 
Instance details

Defined in MonadLib

Methods

fail :: String -> ReaderT i m a #

MonadFix m => MonadFix (ReaderT i m) Source # 
Instance details

Defined in MonadLib

Methods

mfix :: (a -> ReaderT i m a) -> ReaderT i m a

MonadPlus m => Alternative (ReaderT i m) Source # 
Instance details

Defined in MonadLib

Methods

empty :: ReaderT i m a

(<|>) :: ReaderT i m a -> ReaderT i m a -> ReaderT i m a

some :: ReaderT i m a -> ReaderT i m [a]

many :: ReaderT i m a -> ReaderT i m [a]

Monad m => Applicative (ReaderT i m) Source # 
Instance details

Defined in MonadLib

Methods

pure :: a -> ReaderT i m a

(<*>) :: ReaderT i m (a -> b) -> ReaderT i m a -> ReaderT i m b

liftA2 :: (a -> b -> c) -> ReaderT i m a -> ReaderT i m b -> ReaderT i m c

(*>) :: ReaderT i m a -> ReaderT i m b -> ReaderT i m b

(<*) :: ReaderT i m a -> ReaderT i m b -> ReaderT i m a

Monad m => Functor (ReaderT i m) Source # 
Instance details

Defined in MonadLib

Methods

fmap :: (a -> b) -> ReaderT i m a -> ReaderT i m b #

(<$) :: a -> ReaderT i m b -> ReaderT i m a #

Monad m => Monad (ReaderT i m) Source # 
Instance details

Defined in MonadLib

Methods

(>>=) :: ReaderT i m a -> (a -> ReaderT i m b) -> ReaderT i m b #

(>>) :: ReaderT i m a -> ReaderT i m b -> ReaderT i m b #

return :: a -> ReaderT i m a #

MonadPlus m => MonadPlus (ReaderT i m) Source # 
Instance details

Defined in MonadLib

Methods

mzero :: ReaderT i m a #

mplus :: ReaderT i m a -> ReaderT i m a -> ReaderT i m a #

ContM m => ContM (ReaderT i m) Source # 
Instance details

Defined in MonadLib

Methods

callWithCC :: ((a -> Label (ReaderT i m)) -> ReaderT i m a) -> ReaderT i m a Source #

AbortM m i => AbortM (ReaderT j m) i Source # 
Instance details

Defined in MonadLib

Methods

abort :: i -> ReaderT j m a Source #

BaseM m n => BaseM (ReaderT i m) n Source # 
Instance details

Defined in MonadLib

Methods

inBase :: n a -> ReaderT i m a Source #

ExceptionM m j => ExceptionM (ReaderT i m) j Source # 
Instance details

Defined in MonadLib

Methods

raise :: j -> ReaderT i m a Source #

Monad m => ReaderM (ReaderT i m) i Source # 
Instance details

Defined in MonadLib

Methods

ask :: ReaderT i m i Source #

RunExceptionM m i => RunExceptionM (ReaderT j m) i Source # 
Instance details

Defined in MonadLib

Methods

try :: ReaderT j m a -> ReaderT j m (Either i a) Source #

Monad m => RunReaderM (ReaderT i m) i Source # 
Instance details

Defined in MonadLib

Methods

local :: i -> ReaderT i m a -> ReaderT i m a Source #

RunWriterM m j => RunWriterM (ReaderT i m) j Source # 
Instance details

Defined in MonadLib

Methods

collect :: ReaderT i m a -> ReaderT i m (a, j) Source #

StateM m j => StateM (ReaderT i m) j Source # 
Instance details

Defined in MonadLib

Methods

get :: ReaderT i m j Source #

set :: j -> ReaderT i m () Source #

WriterM m j => WriterM (ReaderT i m) j Source # 
Instance details

Defined in MonadLib

Methods

put :: j -> ReaderT i m () Source #

RunM m a r => RunM (ReaderT i m) a (i -> r) Source # 
Instance details

Defined in MonadLib

Methods

runM :: ReaderT i m a -> i -> r Source #

data WriterT i (m :: Type -> Type) a Source #

Add support for collecting values of type i. The type i should be a monoid, whose unit is used to represent a lack of a value, and whose binary operation is used to combine multiple values. This transformer is strict in its output component.

Instances

Instances details
Monoid i => MonadT (WriterT i) Source # 
Instance details

Defined in MonadLib

Methods

lift :: Monad m => m a -> WriterT i m a Source #

(Monoid i, MonadFail m) => MonadFail (WriterT i m) Source # 
Instance details

Defined in MonadLib

Methods

fail :: String -> WriterT i m a #

(MonadFix m, Monoid i) => MonadFix (WriterT i m) Source # 
Instance details

Defined in MonadLib

Methods

mfix :: (a -> WriterT i m a) -> WriterT i m a

(MonadPlus m, Monoid i) => Alternative (WriterT i m) Source # 
Instance details

Defined in MonadLib

Methods

empty :: WriterT i m a

(<|>) :: WriterT i m a -> WriterT i m a -> WriterT i m a

some :: WriterT i m a -> WriterT i m [a]

many :: WriterT i m a -> WriterT i m [a]

(Monad m, Monoid i) => Applicative (WriterT i m) Source # 
Instance details

Defined in MonadLib

Methods

pure :: a -> WriterT i m a

(<*>) :: WriterT i m (a -> b) -> WriterT i m a -> WriterT i m b

liftA2 :: (a -> b -> c) -> WriterT i m a -> WriterT i m b -> WriterT i m c

(*>) :: WriterT i m a -> WriterT i m b -> WriterT i m b

(<*) :: WriterT i m a -> WriterT i m b -> WriterT i m a

(Monad m, Monoid i) => Functor (WriterT i m) Source # 
Instance details

Defined in MonadLib

Methods

fmap :: (a -> b) -> WriterT i m a -> WriterT i m b #

(<$) :: a -> WriterT i m b -> WriterT i m a #

(Monad m, Monoid i) => Monad (WriterT i m) Source # 
Instance details

Defined in MonadLib

Methods

(>>=) :: WriterT i m a -> (a -> WriterT i m b) -> WriterT i m b #

(>>) :: WriterT i m a -> WriterT i m b -> WriterT i m b #

return :: a -> WriterT i m a #

(MonadPlus m, Monoid i) => MonadPlus (WriterT i m) Source # 
Instance details

Defined in MonadLib

Methods

mzero :: WriterT i m a #

mplus :: WriterT i m a -> WriterT i m a -> WriterT i m a #

(ContM m, Monoid i) => ContM (WriterT i m) Source # 
Instance details

Defined in MonadLib

Methods

callWithCC :: ((a -> Label (WriterT i m)) -> WriterT i m a) -> WriterT i m a Source #

(AbortM m i, Monoid j) => AbortM (WriterT j m) i Source # 
Instance details

Defined in MonadLib

Methods

abort :: i -> WriterT j m a Source #

(BaseM m n, Monoid i) => BaseM (WriterT i m) n Source # 
Instance details

Defined in MonadLib

Methods

inBase :: n a -> WriterT i m a Source #

(ExceptionM m j, Monoid i) => ExceptionM (WriterT i m) j Source # 
Instance details

Defined in MonadLib

Methods

raise :: j -> WriterT i m a Source #

(ReaderM m j, Monoid i) => ReaderM (WriterT i m) j Source # 
Instance details

Defined in MonadLib

Methods

ask :: WriterT i m j Source #

(RunExceptionM m i, Monoid j) => RunExceptionM (WriterT j m) i Source # 
Instance details

Defined in MonadLib

Methods

try :: WriterT j m a -> WriterT j m (Either i a) Source #

(RunReaderM m j, Monoid i) => RunReaderM (WriterT i m) j Source # 
Instance details

Defined in MonadLib

Methods

local :: j -> WriterT i m a -> WriterT i m a Source #

(Monad m, Monoid i) => RunWriterM (WriterT i m) i Source # 
Instance details

Defined in MonadLib

Methods

collect :: WriterT i m a -> WriterT i m (a, i) Source #

(StateM m j, Monoid i) => StateM (WriterT i m) j Source # 
Instance details

Defined in MonadLib

Methods

get :: WriterT i m j Source #

set :: j -> WriterT i m () Source #

(Monad m, Monoid i) => WriterM (WriterT i m) i Source # 
Instance details

Defined in MonadLib

Methods

put :: i -> WriterT i m () Source #

(Monoid i, RunM m (a, i) r) => RunM (WriterT i m) a r Source # 
Instance details

Defined in MonadLib

Methods

runM :: WriterT i m a -> r Source #

data StateT i (m :: Type -> Type) a Source #

Add support for threading state of type i.

Instances

Instances details
MonadT (StateT i) Source # 
Instance details

Defined in MonadLib

Methods

lift :: Monad m => m a -> StateT i m a Source #

MonadFail m => MonadFail (StateT i m) Source # 
Instance details

Defined in MonadLib

Methods

fail :: String -> StateT i m a #

MonadFix m => MonadFix (StateT i m) Source # 
Instance details

Defined in MonadLib

Methods

mfix :: (a -> StateT i m a) -> StateT i m a

MonadPlus m => Alternative (StateT i m) Source # 
Instance details

Defined in MonadLib

Methods

empty :: StateT i m a

(<|>) :: StateT i m a -> StateT i m a -> StateT i m a

some :: StateT i m a -> StateT i m [a]

many :: StateT i m a -> StateT i m [a]

Monad m => Applicative (StateT i m) Source # 
Instance details

Defined in MonadLib

Methods

pure :: a -> StateT i m a

(<*>) :: StateT i m (a -> b) -> StateT i m a -> StateT i m b

liftA2 :: (a -> b -> c) -> StateT i m a -> StateT i m b -> StateT i m c

(*>) :: StateT i m a -> StateT i m b -> StateT i m b

(<*) :: StateT i m a -> StateT i m b -> StateT i m a

Monad m => Functor (StateT i m) Source # 
Instance details

Defined in MonadLib

Methods

fmap :: (a -> b) -> StateT i m a -> StateT i m b #

(<$) :: a -> StateT i m b -> StateT i m a #

Monad m => Monad (StateT i m) Source # 
Instance details

Defined in MonadLib

Methods

(>>=) :: StateT i m a -> (a -> StateT i m b) -> StateT i m b #

(>>) :: StateT i m a -> StateT i m b -> StateT i m b #

return :: a -> StateT i m a #

MonadPlus m => MonadPlus (StateT i m) Source # 
Instance details

Defined in MonadLib

Methods

mzero :: StateT i m a #

mplus :: StateT i m a -> StateT i m a -> StateT i m a #

ContM m => ContM (StateT i m) Source # 
Instance details

Defined in MonadLib

Methods

callWithCC :: ((a -> Label (StateT i m)) -> StateT i m a) -> StateT i m a Source #

AbortM m i => AbortM (StateT j m) i Source # 
Instance details

Defined in MonadLib

Methods

abort :: i -> StateT j m a Source #

BaseM m n => BaseM (StateT i m) n Source # 
Instance details

Defined in MonadLib

Methods

inBase :: n a -> StateT i m a Source #

ExceptionM m j => ExceptionM (StateT i m) j Source # 
Instance details

Defined in MonadLib

Methods

raise :: j -> StateT i m a Source #

ReaderM m j => ReaderM (StateT i m) j Source # 
Instance details

Defined in MonadLib

Methods

ask :: StateT i m j Source #

RunExceptionM m i => RunExceptionM (StateT j m) i Source # 
Instance details

Defined in MonadLib

Methods

try :: StateT j m a -> StateT j m (Either i a) Source #

RunReaderM m j => RunReaderM (StateT i m) j Source # 
Instance details

Defined in MonadLib

Methods

local :: j -> StateT i m a -> StateT i m a Source #

RunWriterM m j => RunWriterM (StateT i m) j Source # 
Instance details

Defined in MonadLib

Methods

collect :: StateT i m a -> StateT i m (a, j) Source #

Monad m => StateM (StateT i m) i Source # 
Instance details

Defined in MonadLib

Methods

get :: StateT i m i Source #

set :: i -> StateT i m () Source #

WriterM m j => WriterM (StateT i m) j Source # 
Instance details

Defined in MonadLib

Methods

put :: j -> StateT i m () Source #

RunM m (a, i) r => RunM (StateT i m) a (i -> r) Source # 
Instance details

Defined in MonadLib

Methods

runM :: StateT i m a -> i -> r Source #

data ExceptionT i (m :: Type -> Type) a Source #

Add support for exceptions of type i.

Instances

Instances details
MonadT (ExceptionT i) Source # 
Instance details

Defined in MonadLib

Methods

lift :: Monad m => m a -> ExceptionT i m a Source #

MonadFail m => MonadFail (ExceptionT i m) Source # 
Instance details

Defined in MonadLib

Methods

fail :: String -> ExceptionT i m a #

MonadFix m => MonadFix (ExceptionT i m) Source # 
Instance details

Defined in MonadLib

Methods

mfix :: (a -> ExceptionT i m a) -> ExceptionT i m a

MonadPlus m => Alternative (ExceptionT i m) Source # 
Instance details

Defined in MonadLib

Methods

empty :: ExceptionT i m a

(<|>) :: ExceptionT i m a -> ExceptionT i m a -> ExceptionT i m a

some :: ExceptionT i m a -> ExceptionT i m [a]

many :: ExceptionT i m a -> ExceptionT i m [a]

Monad m => Applicative (ExceptionT i m) Source # 
Instance details

Defined in MonadLib

Methods

pure :: a -> ExceptionT i m a

(<*>) :: ExceptionT i m (a -> b) -> ExceptionT i m a -> ExceptionT i m b

liftA2 :: (a -> b -> c) -> ExceptionT i m a -> ExceptionT i m b -> ExceptionT i m c

(*>) :: ExceptionT i m a -> ExceptionT i m b -> ExceptionT i m b

(<*) :: ExceptionT i m a -> ExceptionT i m b -> ExceptionT i m a

Monad m => Functor (ExceptionT i m) Source # 
Instance details

Defined in MonadLib

Methods

fmap :: (a -> b) -> ExceptionT i m a -> ExceptionT i m b #

(<$) :: a -> ExceptionT i m b -> ExceptionT i m a #

Monad m => Monad (ExceptionT i m) Source # 
Instance details

Defined in MonadLib

Methods

(>>=) :: ExceptionT i m a -> (a -> ExceptionT i m b) -> ExceptionT i m b #

(>>) :: ExceptionT i m a -> ExceptionT i m b -> ExceptionT i m b #

return :: a -> ExceptionT i m a #

MonadPlus m => MonadPlus (ExceptionT i m) Source # 
Instance details

Defined in MonadLib

Methods

mzero :: ExceptionT i m a #

mplus :: ExceptionT i m a -> ExceptionT i m a -> ExceptionT i m a #

ContM m => ContM (ExceptionT i m) Source # 
Instance details

Defined in MonadLib

Methods

callWithCC :: ((a -> Label (ExceptionT i m)) -> ExceptionT i m a) -> ExceptionT i m a Source #

AbortM m i => AbortM (ExceptionT j m) i Source # 
Instance details

Defined in MonadLib

Methods

abort :: i -> ExceptionT j m a Source #

BaseM m n => BaseM (ExceptionT i m) n Source # 
Instance details

Defined in MonadLib

Methods

inBase :: n a -> ExceptionT i m a Source #

Monad m => ExceptionM (ExceptionT i m) i Source # 
Instance details

Defined in MonadLib

Methods

raise :: i -> ExceptionT i m a Source #

ReaderM m j => ReaderM (ExceptionT i m) j Source # 
Instance details

Defined in MonadLib

Methods

ask :: ExceptionT i m j Source #

Monad m => RunExceptionM (ExceptionT i m) i Source # 
Instance details

Defined in MonadLib

Methods

try :: ExceptionT i m a -> ExceptionT i m (Either i a) Source #

RunReaderM m j => RunReaderM (ExceptionT i m) j Source # 
Instance details

Defined in MonadLib

Methods

local :: j -> ExceptionT i m a -> ExceptionT i m a Source #

RunWriterM m j => RunWriterM (ExceptionT i m) j Source # 
Instance details

Defined in MonadLib

Methods

collect :: ExceptionT i m a -> ExceptionT i m (a, j) Source #

StateM m j => StateM (ExceptionT i m) j Source # 
Instance details

Defined in MonadLib

Methods

get :: ExceptionT i m j Source #

set :: j -> ExceptionT i m () Source #

WriterM m j => WriterM (ExceptionT i m) j Source # 
Instance details

Defined in MonadLib

Methods

put :: j -> ExceptionT i m () Source #

RunM m (Either i a) r => RunM (ExceptionT i m) a r Source # 
Instance details

Defined in MonadLib

Methods

runM :: ExceptionT i m a -> r Source #

About the WriterM instance: If an exception is risen while we are collecting output, then the output is lost. If the output is important, then use try to ensure that no exception may occur. Example:

do (r,w) <- collect (try m)
   case r of
     Left err -> ...do something...
     Right a  -> ...do something...

data ChoiceT (m :: Type -> Type) a Source #

Add support for multiple answers.

Instances

Instances details
MonadT ChoiceT Source # 
Instance details

Defined in MonadLib

Methods

lift :: Monad m => m a -> ChoiceT m a Source #

MonadFail m => MonadFail (ChoiceT m) Source # 
Instance details

Defined in MonadLib

Methods

fail :: String -> ChoiceT m a #

Monad m => Alternative (ChoiceT m) Source # 
Instance details

Defined in MonadLib

Methods

empty :: ChoiceT m a

(<|>) :: ChoiceT m a -> ChoiceT m a -> ChoiceT m a

some :: ChoiceT m a -> ChoiceT m [a]

many :: ChoiceT m a -> ChoiceT m [a]

Monad m => Applicative (ChoiceT m) Source # 
Instance details

Defined in MonadLib

Methods

pure :: a -> ChoiceT m a

(<*>) :: ChoiceT m (a -> b) -> ChoiceT m a -> ChoiceT m b

liftA2 :: (a -> b -> c) -> ChoiceT m a -> ChoiceT m b -> ChoiceT m c

(*>) :: ChoiceT m a -> ChoiceT m b -> ChoiceT m b

(<*) :: ChoiceT m a -> ChoiceT m b -> ChoiceT m a

Monad m => Functor (ChoiceT m) Source # 
Instance details

Defined in MonadLib

Methods

fmap :: (a -> b) -> ChoiceT m a -> ChoiceT m b #

(<$) :: a -> ChoiceT m b -> ChoiceT m a #

Monad m => Monad (ChoiceT m) Source # 
Instance details

Defined in MonadLib

Methods

(>>=) :: ChoiceT m a -> (a -> ChoiceT m b) -> ChoiceT m b #

(>>) :: ChoiceT m a -> ChoiceT m b -> ChoiceT m b #

return :: a -> ChoiceT m a #

Monad m => MonadPlus (ChoiceT m) Source # 
Instance details

Defined in MonadLib

Methods

mzero :: ChoiceT m a #

mplus :: ChoiceT m a -> ChoiceT m a -> ChoiceT m a #

ContM m => ContM (ChoiceT m) Source # 
Instance details

Defined in MonadLib

Methods

callWithCC :: ((a -> Label (ChoiceT m)) -> ChoiceT m a) -> ChoiceT m a Source #

AbortM m i => AbortM (ChoiceT m) i Source # 
Instance details

Defined in MonadLib

Methods

abort :: i -> ChoiceT m a Source #

BaseM m n => BaseM (ChoiceT m) n Source # 
Instance details

Defined in MonadLib

Methods

inBase :: n a -> ChoiceT m a Source #

ExceptionM m j => ExceptionM (ChoiceT m) j Source # 
Instance details

Defined in MonadLib

Methods

raise :: j -> ChoiceT m a Source #

ReaderM m j => ReaderM (ChoiceT m) j Source # 
Instance details

Defined in MonadLib

Methods

ask :: ChoiceT m j Source #

StateM m j => StateM (ChoiceT m) j Source # 
Instance details

Defined in MonadLib

Methods

get :: ChoiceT m j Source #

set :: j -> ChoiceT m () Source #

WriterM m j => WriterM (ChoiceT m) j Source # 
Instance details

Defined in MonadLib

Methods

put :: j -> ChoiceT m () Source #

RunM m (Maybe (a, ChoiceT m a)) r => RunM (ChoiceT m) a r Source # 
Instance details

Defined in MonadLib

Methods

runM :: ChoiceT m a -> r Source #

data ContT i (m :: Type -> Type) a Source #

Add support for continuations within a prompt of type i.

Instances

Instances details
MonadT (ContT i) Source # 
Instance details

Defined in MonadLib

Methods

lift :: Monad m => m a -> ContT i m a Source #

MonadFail m => MonadFail (ContT i m) Source # 
Instance details

Defined in MonadLib

Methods

fail :: String -> ContT i m a #

MonadPlus m => Alternative (ContT i m) Source # 
Instance details

Defined in MonadLib

Methods

empty :: ContT i m a

(<|>) :: ContT i m a -> ContT i m a -> ContT i m a

some :: ContT i m a -> ContT i m [a]

many :: ContT i m a -> ContT i m [a]

Monad m => Applicative (ContT i m) Source # 
Instance details

Defined in MonadLib

Methods

pure :: a -> ContT i m a

(<*>) :: ContT i m (a -> b) -> ContT i m a -> ContT i m b

liftA2 :: (a -> b -> c) -> ContT i m a -> ContT i m b -> ContT i m c

(*>) :: ContT i m a -> ContT i m b -> ContT i m b

(<*) :: ContT i m a -> ContT i m b -> ContT i m a

Monad m => Functor (ContT i m) Source # 
Instance details

Defined in MonadLib

Methods

fmap :: (a -> b) -> ContT i m a -> ContT i m b #

(<$) :: a -> ContT i m b -> ContT i m a #

Monad m => Monad (ContT i m) Source # 
Instance details

Defined in MonadLib

Methods

(>>=) :: ContT i m a -> (a -> ContT i m b) -> ContT i m b #

(>>) :: ContT i m a -> ContT i m b -> ContT i m b #

return :: a -> ContT i m a #

MonadPlus m => MonadPlus (ContT i m) Source # 
Instance details

Defined in MonadLib

Methods

mzero :: ContT i m a #

mplus :: ContT i m a -> ContT i m a -> ContT i m a #

Monad m => ContM (ContT i m) Source # 
Instance details

Defined in MonadLib

Methods

callWithCC :: ((a -> Label (ContT i m)) -> ContT i m a) -> ContT i m a Source #

Monad m => AbortM (ContT i m) i Source # 
Instance details

Defined in MonadLib

Methods

abort :: i -> ContT i m a Source #

BaseM m n => BaseM (ContT i m) n Source # 
Instance details

Defined in MonadLib

Methods

inBase :: n a -> ContT i m a Source #

ExceptionM m j => ExceptionM (ContT i m) j Source # 
Instance details

Defined in MonadLib

Methods

raise :: j -> ContT i m a Source #

ReaderM m j => ReaderM (ContT i m) j Source # 
Instance details

Defined in MonadLib

Methods

ask :: ContT i m j Source #

RunReaderM m j => RunReaderM (ContT i m) j Source # 
Instance details

Defined in MonadLib

Methods

local :: j -> ContT i m a -> ContT i m a Source #

(RunWriterM m j, MonadFix m) => RunWriterM (ContT i m) j Source # 
Instance details

Defined in MonadLib

Methods

collect :: ContT i m a -> ContT i m (a, j) Source #

StateM m j => StateM (ContT i m) j Source # 
Instance details

Defined in MonadLib

Methods

get :: ContT i m j Source #

set :: j -> ContT i m () Source #

WriterM m j => WriterM (ContT i m) j Source # 
Instance details

Defined in MonadLib

Methods

put :: j -> ContT i m () Source #

RunM m i r => RunM (ContT i m) a ((a -> m i) -> r) Source # 
Instance details

Defined in MonadLib

Methods

runM :: ContT i m a -> (a -> m i) -> r Source #

Lifting

The following operations allow us to promote computations in the underlying monad to computations that support an extra effect. Computations defined in this way do not make use of the new effect but can be combined with other operations that utilize the effect.

class MonadT (t :: (Type -> Type) -> Type -> Type) where Source #

Methods

lift :: Monad m => m a -> t m a Source #

Promote a computation from the underlying monad.

Instances

Instances details
MonadT ChoiceT Source # 
Instance details

Defined in MonadLib

Methods

lift :: Monad m => m a -> ChoiceT m a Source #

MonadT IdT Source # 
Instance details

Defined in MonadLib

Methods

lift :: Monad m => m a -> IdT m a Source #

MonadT (ContT i) Source # 
Instance details

Defined in MonadLib

Methods

lift :: Monad m => m a -> ContT i m a Source #

MonadT (ExceptionT i) Source # 
Instance details

Defined in MonadLib

Methods

lift :: Monad m => m a -> ExceptionT i m a Source #

MonadT (ReaderT i) Source # 
Instance details

Defined in MonadLib

Methods

lift :: Monad m => m a -> ReaderT i m a Source #

MonadT (StateT i) Source # 
Instance details

Defined in MonadLib

Methods

lift :: Monad m => m a -> StateT i m a Source #

Monoid i => MonadT (WriterT i) Source # 
Instance details

Defined in MonadLib

Methods

lift :: Monad m => m a -> WriterT i m a Source #

class (Monad m, Monad n) => BaseM (m :: Type -> Type) (n :: Type -> Type) | m -> n where Source #

Methods

inBase :: n a -> m a Source #

Promote a computation from the base monad.

Instances

Instances details
BaseM IO IO Source # 
Instance details

Defined in MonadLib

Methods

inBase :: IO a -> IO a Source #

BaseM Id Id Source # 
Instance details

Defined in MonadLib

Methods

inBase :: Id a -> Id a Source #

BaseM Lift Lift Source # 
Instance details

Defined in MonadLib

Methods

inBase :: Lift a -> Lift a Source #

BaseM Maybe Maybe Source # 
Instance details

Defined in MonadLib

Methods

inBase :: Maybe a -> Maybe a Source #

BaseM [] [] Source # 
Instance details

Defined in MonadLib

Methods

inBase :: [a] -> [a] Source #

BaseM m n => BaseM (ChoiceT m) n Source # 
Instance details

Defined in MonadLib

Methods

inBase :: n a -> ChoiceT m a Source #

BaseM m n => BaseM (IdT m) n Source # 
Instance details

Defined in MonadLib

Methods

inBase :: n a -> IdT m a Source #

BaseM (ST s) (ST s) Source # 
Instance details

Defined in MonadLib

Methods

inBase :: ST s a -> ST s a Source #

BaseM (Cont i) (Cont i) Source # 
Instance details

Defined in MonadLib.Monads

Methods

inBase :: Cont i a -> Cont i a Source #

BaseM (Exception i) (Exception i) Source # 
Instance details

Defined in MonadLib.Monads

Methods

inBase :: Exception i a -> Exception i a Source #

BaseM (Reader i) (Reader i) Source # 
Instance details

Defined in MonadLib.Monads

Methods

inBase :: Reader i a -> Reader i a Source #

BaseM (State i) (State i) Source # 
Instance details

Defined in MonadLib.Monads

Methods

inBase :: State i a -> State i a Source #

Monoid i => BaseM (Writer i) (Writer i) Source # 
Instance details

Defined in MonadLib.Monads

Methods

inBase :: Writer i a -> Writer i a Source #

BaseM m n => BaseM (ContT i m) n Source # 
Instance details

Defined in MonadLib

Methods

inBase :: n a -> ContT i m a Source #

BaseM m n => BaseM (ExceptionT i m) n Source # 
Instance details

Defined in MonadLib

Methods

inBase :: n a -> ExceptionT i m a Source #

BaseM m n => BaseM (ReaderT i m) n Source # 
Instance details

Defined in MonadLib

Methods

inBase :: n a -> ReaderT i m a Source #

BaseM m n => BaseM (StateT i m) n Source # 
Instance details

Defined in MonadLib

Methods

inBase :: n a -> StateT i m a Source #

(BaseM m n, Monoid i) => BaseM (WriterT i m) n Source # 
Instance details

Defined in MonadLib

Methods

inBase :: n a -> WriterT i m a Source #

Effect Classes

The following classes define overloaded operations that can be used to define effectful computations.

class Monad m => ReaderM (m :: Type -> Type) i | m -> i where Source #

Classifies monads that provide access to a context of type i.

Methods

ask :: m i Source #

Get the context.

Instances

Instances details
ReaderM m j => ReaderM (ChoiceT m) j Source # 
Instance details

Defined in MonadLib

Methods

ask :: ChoiceT m j Source #

ReaderM m j => ReaderM (IdT m) j Source # 
Instance details

Defined in MonadLib

Methods

ask :: IdT m j Source #

ReaderM (Reader i) i Source # 
Instance details

Defined in MonadLib.Monads

Methods

ask :: Reader i i Source #

ReaderM m j => ReaderM (ContT i m) j Source # 
Instance details

Defined in MonadLib

Methods

ask :: ContT i m j Source #

ReaderM m j => ReaderM (ExceptionT i m) j Source # 
Instance details

Defined in MonadLib

Methods

ask :: ExceptionT i m j Source #

Monad m => ReaderM (ReaderT i m) i Source # 
Instance details

Defined in MonadLib

Methods

ask :: ReaderT i m i Source #

ReaderM m j => ReaderM (StateT i m) j Source # 
Instance details

Defined in MonadLib

Methods

ask :: StateT i m j Source #

(ReaderM m j, Monoid i) => ReaderM (WriterT i m) j Source # 
Instance details

Defined in MonadLib

Methods

ask :: WriterT i m j Source #

class Monad m => WriterM (m :: Type -> Type) i | m -> i where Source #

Classifies monads that can collect values of type i.

Methods

put :: i -> m () Source #

Add a value to the collection.

Instances

Instances details
WriterM m j => WriterM (ChoiceT m) j Source # 
Instance details

Defined in MonadLib

Methods

put :: j -> ChoiceT m () Source #

WriterM m j => WriterM (IdT m) j Source # 
Instance details

Defined in MonadLib

Methods

put :: j -> IdT m () Source #

Monoid i => WriterM (Writer i) i Source # 
Instance details

Defined in MonadLib.Monads

Methods

put :: i -> Writer i () Source #

WriterM m j => WriterM (ContT i m) j Source # 
Instance details

Defined in MonadLib

Methods

put :: j -> ContT i m () Source #

WriterM m j => WriterM (ExceptionT i m) j Source # 
Instance details

Defined in MonadLib

Methods

put :: j -> ExceptionT i m () Source #

WriterM m j => WriterM (ReaderT i m) j Source # 
Instance details

Defined in MonadLib

Methods

put :: j -> ReaderT i m () Source #

WriterM m j => WriterM (StateT i m) j Source # 
Instance details

Defined in MonadLib

Methods

put :: j -> StateT i m () Source #

(Monad m, Monoid i) => WriterM (WriterT i m) i Source # 
Instance details

Defined in MonadLib

Methods

put :: i -> WriterT i m () Source #

class Monad m => StateM (m :: Type -> Type) i | m -> i where Source #

Classifies monads that propagate a state component of type i.

Methods

get :: m i Source #

Get the state.

set :: i -> m () Source #

Set the state.

Instances

Instances details
StateM m j => StateM (ChoiceT m) j Source # 
Instance details

Defined in MonadLib

Methods

get :: ChoiceT m j Source #

set :: j -> ChoiceT m () Source #

StateM m j => StateM (IdT m) j Source # 
Instance details

Defined in MonadLib

Methods

get :: IdT m j Source #

set :: j -> IdT m () Source #

StateM (State i) i Source # 
Instance details

Defined in MonadLib.Monads

Methods

get :: State i i Source #

set :: i -> State i () Source #

StateM m j => StateM (ContT i m) j Source # 
Instance details

Defined in MonadLib

Methods

get :: ContT i m j Source #

set :: j -> ContT i m () Source #

StateM m j => StateM (ExceptionT i m) j Source # 
Instance details

Defined in MonadLib

Methods

get :: ExceptionT i m j Source #

set :: j -> ExceptionT i m () Source #

StateM m j => StateM (ReaderT i m) j Source # 
Instance details

Defined in MonadLib

Methods

get :: ReaderT i m j Source #

set :: j -> ReaderT i m () Source #

Monad m => StateM (StateT i m) i Source # 
Instance details

Defined in MonadLib

Methods

get :: StateT i m i Source #

set :: i -> StateT i m () Source #

(StateM m j, Monoid i) => StateM (WriterT i m) j Source # 
Instance details

Defined in MonadLib

Methods

get :: WriterT i m j Source #

set :: j -> WriterT i m () Source #

class Monad m => ExceptionM (m :: Type -> Type) i | m -> i where Source #

Classifies monads that support raising exceptions of type i.

Methods

raise :: i -> m a Source #

Raise an exception.

Instances

Instances details
ExceptionM IO SomeException Source # 
Instance details

Defined in MonadLib

Methods

raise :: SomeException -> IO a Source #

ExceptionM m j => ExceptionM (ChoiceT m) j Source # 
Instance details

Defined in MonadLib

Methods

raise :: j -> ChoiceT m a Source #

ExceptionM m j => ExceptionM (IdT m) j Source # 
Instance details

Defined in MonadLib

Methods

raise :: j -> IdT m a Source #

ExceptionM (Exception i) i Source # 
Instance details

Defined in MonadLib.Monads

Methods

raise :: i -> Exception i a Source #

ExceptionM m j => ExceptionM (ContT i m) j Source # 
Instance details

Defined in MonadLib

Methods

raise :: j -> ContT i m a Source #

Monad m => ExceptionM (ExceptionT i m) i Source # 
Instance details

Defined in MonadLib

Methods

raise :: i -> ExceptionT i m a Source #

ExceptionM m j => ExceptionM (ReaderT i m) j Source # 
Instance details

Defined in MonadLib

Methods

raise :: j -> ReaderT i m a Source #

ExceptionM m j => ExceptionM (StateT i m) j Source # 
Instance details

Defined in MonadLib

Methods

raise :: j -> StateT i m a Source #

(ExceptionM m j, Monoid i) => ExceptionM (WriterT i m) j Source # 
Instance details

Defined in MonadLib

Methods

raise :: j -> WriterT i m a Source #

class Monad m => ContM (m :: Type -> Type) where Source #

Classifies monads that provide access to a computation's continuation.

Methods

callWithCC :: ((a -> Label m) -> m a) -> m a Source #

Capture the current continuation.

Instances

Instances details
ContM m => ContM (ChoiceT m) Source # 
Instance details

Defined in MonadLib

Methods

callWithCC :: ((a -> Label (ChoiceT m)) -> ChoiceT m a) -> ChoiceT m a Source #

ContM m => ContM (IdT m) Source # 
Instance details

Defined in MonadLib

Methods

callWithCC :: ((a -> Label (IdT m)) -> IdT m a) -> IdT m a Source #

ContM (Cont i) Source # 
Instance details

Defined in MonadLib.Monads

Methods

callWithCC :: ((a -> Label (Cont i)) -> Cont i a) -> Cont i a Source #

Monad m => ContM (ContT i m) Source # 
Instance details

Defined in MonadLib

Methods

callWithCC :: ((a -> Label (ContT i m)) -> ContT i m a) -> ContT i m a Source #

ContM m => ContM (ExceptionT i m) Source # 
Instance details

Defined in MonadLib

Methods

callWithCC :: ((a -> Label (ExceptionT i m)) -> ExceptionT i m a) -> ExceptionT i m a Source #

ContM m => ContM (ReaderT i m) Source # 
Instance details

Defined in MonadLib

Methods

callWithCC :: ((a -> Label (ReaderT i m)) -> ReaderT i m a) -> ReaderT i m a Source #

ContM m => ContM (StateT i m) Source # 
Instance details

Defined in MonadLib

Methods

callWithCC :: ((a -> Label (StateT i m)) -> StateT i m a) -> StateT i m a Source #

(ContM m, Monoid i) => ContM (WriterT i m) Source # 
Instance details

Defined in MonadLib

Methods

callWithCC :: ((a -> Label (WriterT i m)) -> WriterT i m a) -> WriterT i m a Source #

class Monad m => AbortM (m :: Type -> Type) i where Source #

Classifies monads that support aborting the program and returning a given final result of type i.

Methods

abort :: i -> m a Source #

Abort the program with the given value as final result.

Instances

Instances details
AbortM IO ExitCode Source # 
Instance details

Defined in MonadLib

Methods

abort :: ExitCode -> IO a Source #

AbortM m i => AbortM (ChoiceT m) i Source # 
Instance details

Defined in MonadLib

Methods

abort :: i -> ChoiceT m a Source #

AbortM m i => AbortM (IdT m) i Source # 
Instance details

Defined in MonadLib

Methods

abort :: i -> IdT m a Source #

Monad m => AbortM (ContT i m) i Source # 
Instance details

Defined in MonadLib

Methods

abort :: i -> ContT i m a Source #

AbortM m i => AbortM (ExceptionT j m) i Source # 
Instance details

Defined in MonadLib

Methods

abort :: i -> ExceptionT j m a Source #

AbortM m i => AbortM (ReaderT j m) i Source # 
Instance details

Defined in MonadLib

Methods

abort :: i -> ReaderT j m a Source #

AbortM m i => AbortM (StateT j m) i Source # 
Instance details

Defined in MonadLib

Methods

abort :: i -> StateT j m a Source #

(AbortM m i, Monoid j) => AbortM (WriterT j m) i Source # 
Instance details

Defined in MonadLib

Methods

abort :: i -> WriterT j m a Source #

data Label (m :: Type -> Type) Source #

An explicit representation for monadic continuations.

labelCC :: ContM m => a -> m (a, a -> Label m) Source #

Capture the current continuation. This function is like return, except that it also captures the current continuation. Later, we can use jump to repeat the computation from this point onwards but with a possibly different value.

labelCC_ :: ContM m => m (Label m) Source #

Capture the current continuation. Later we can use jump to restart the program from this point.

jump :: Label m -> m a Source #

Restart a previously captured computation.

labelC :: (forall b. m b) -> Label m Source #

Label a given continuation.

callCC :: ContM m => ((a -> m b) -> m a) -> m a Source #

A version of callWithCC that avoids the need for an explicit use of the jump function.

Execution

Eliminating Effects

The following functions eliminate the outermost effect of a computation by translating a computation into an equivalent computation in the underlying monad. (The exceptions are Id and Lift which are not transformers but ordinary monads and so, their run operations simply eliminate the monad.)

runId :: Id a -> a Source #

Get the result of a pure computation.

runLift :: Lift a -> a Source #

Get the result of a pure strict computation.

runIdT :: IdT m a -> m a Source #

Remove an identity layer.

runReaderT :: i -> ReaderT i m a -> m a Source #

Execute a reader computation in the given context.

runWriterT :: Monad m => WriterT i m a -> m (a, i) Source #

Execute a writer computation. Returns the result and the collected output.

runStateT :: i -> StateT i m a -> m (a, i) Source #

Execute a stateful computation in the given initial state. The second component of the result is the final state.

runExceptionT :: ExceptionT i m a -> m (Either i a) Source #

Execute a computation with exceptions. Successful results are tagged with Right, exceptional results are tagged with Left.

runContT :: (a -> m i) -> ContT i m a -> m i Source #

Execute a computation with the given continuation.

runChoiceT :: Monad m => ChoiceT m a -> m (Maybe (a, ChoiceT m a)) Source #

Execute a computation that may return multiple answers. The resulting computation returns Nothing if no answers were found, or Just (answer,new_comp), where answer is an answer, and new_comp is a computation that may produce more answers. The search is depth-first and left-biased with respect to the mplus operation.

findOne :: Monad m => ChoiceT m a -> m (Maybe a) Source #

Execute a computation that may return multiple answers, returning at most one answer.

findAll :: Monad m => ChoiceT m a -> m [a] Source #

Execute a computation that may return multiple answers, collecting all possible answers.

class Monad m => RunM (m :: Type -> Type) a r | m a -> r where Source #

Generalized running.

Methods

runM :: m a -> r Source #

Instances

Instances details
RunM Id a a Source # 
Instance details

Defined in MonadLib

Methods

runM :: Id a -> a Source #

RunM Lift a a Source # 
Instance details

Defined in MonadLib

Methods

runM :: Lift a -> a Source #

RunM IO a (IO a) Source # 
Instance details

Defined in MonadLib

Methods

runM :: IO a -> IO a Source #

RunM m (Maybe (a, ChoiceT m a)) r => RunM (ChoiceT m) a r Source # 
Instance details

Defined in MonadLib

Methods

runM :: ChoiceT m a -> r Source #

RunM m a r => RunM (IdT m) a r Source # 
Instance details

Defined in MonadLib

Methods

runM :: IdT m a -> r Source #

RunM m (Either i a) r => RunM (ExceptionT i m) a r Source # 
Instance details

Defined in MonadLib

Methods

runM :: ExceptionT i m a -> r Source #

(Monoid i, RunM m (a, i) r) => RunM (WriterT i m) a r Source # 
Instance details

Defined in MonadLib

Methods

runM :: WriterT i m a -> r Source #

RunM m i r => RunM (ContT i m) a ((a -> m i) -> r) Source # 
Instance details

Defined in MonadLib

Methods

runM :: ContT i m a -> (a -> m i) -> r Source #

RunM m a r => RunM (ReaderT i m) a (i -> r) Source # 
Instance details

Defined in MonadLib

Methods

runM :: ReaderT i m a -> i -> r Source #

RunM m (a, i) r => RunM (StateT i m) a (i -> r) Source # 
Instance details

Defined in MonadLib

Methods

runM :: StateT i m a -> i -> r Source #

Nested Execution

The following classes define operations that are overloaded versions of the run operations. Unlike the run operations, these functions do not change the type of the computation (i.e., they do not remove a layer). Instead, they perform the effects in a ``separate effect thread''.

class ReaderM m i => RunReaderM (m :: Type -> Type) i | m -> i where Source #

Classifies monads that support changing the context for a sub-computation.

Methods

local :: i -> m a -> m a Source #

Change the context for the duration of a sub-computation.

Instances

Instances details
RunReaderM m j => RunReaderM (IdT m) j Source # 
Instance details

Defined in MonadLib

Methods

local :: j -> IdT m a -> IdT m a Source #

RunReaderM (Reader i) i Source # 
Instance details

Defined in MonadLib.Monads

Methods

local :: i -> Reader i a -> Reader i a Source #

RunReaderM m j => RunReaderM (ContT i m) j Source # 
Instance details

Defined in MonadLib

Methods

local :: j -> ContT i m a -> ContT i m a Source #

RunReaderM m j => RunReaderM (ExceptionT i m) j Source # 
Instance details

Defined in MonadLib

Methods

local :: j -> ExceptionT i m a -> ExceptionT i m a Source #

Monad m => RunReaderM (ReaderT i m) i Source # 
Instance details

Defined in MonadLib

Methods

local :: i -> ReaderT i m a -> ReaderT i m a Source #

RunReaderM m j => RunReaderM (StateT i m) j Source # 
Instance details

Defined in MonadLib

Methods

local :: j -> StateT i m a -> StateT i m a Source #

(RunReaderM m j, Monoid i) => RunReaderM (WriterT i m) j Source # 
Instance details

Defined in MonadLib

Methods

local :: j -> WriterT i m a -> WriterT i m a Source #

class WriterM m i => RunWriterM (m :: Type -> Type) i | m -> i where Source #

Classifies monads that support collecting the output of a sub-computation.

Methods

collect :: m a -> m (a, i) Source #

Collect the output from a sub-computation.

Instances

Instances details
RunWriterM m j => RunWriterM (IdT m) j Source # 
Instance details

Defined in MonadLib

Methods

collect :: IdT m a -> IdT m (a, j) Source #

Monoid i => RunWriterM (Writer i) i Source # 
Instance details

Defined in MonadLib.Monads

Methods

collect :: Writer i a -> Writer i (a, i) Source #

(RunWriterM m j, MonadFix m) => RunWriterM (ContT i m) j Source # 
Instance details

Defined in MonadLib

Methods

collect :: ContT i m a -> ContT i m (a, j) Source #

RunWriterM m j => RunWriterM (ExceptionT i m) j Source # 
Instance details

Defined in MonadLib

Methods

collect :: ExceptionT i m a -> ExceptionT i m (a, j) Source #

RunWriterM m j => RunWriterM (ReaderT i m) j Source # 
Instance details

Defined in MonadLib

Methods

collect :: ReaderT i m a -> ReaderT i m (a, j) Source #

RunWriterM m j => RunWriterM (StateT i m) j Source # 
Instance details

Defined in MonadLib

Methods

collect :: StateT i m a -> StateT i m (a, j) Source #

(Monad m, Monoid i) => RunWriterM (WriterT i m) i Source # 
Instance details

Defined in MonadLib

Methods

collect :: WriterT i m a -> WriterT i m (a, i) Source #

class ExceptionM m i => RunExceptionM (m :: Type -> Type) i | m -> i where Source #

Classifies monads that support handling of exceptions.

Methods

try :: m a -> m (Either i a) Source #

Convert computations that may raise an exception into computations that do not raise exception but instead, yield a tagged results. Exceptions are tagged with Left, successful computations are tagged with Right.

Instances

Instances details
RunExceptionM IO SomeException Source # 
Instance details

Defined in MonadLib

Methods

try :: IO a -> IO (Either SomeException a) Source #

RunExceptionM m i => RunExceptionM (IdT m) i Source # 
Instance details

Defined in MonadLib

Methods

try :: IdT m a -> IdT m (Either i a) Source #

RunExceptionM (Exception i) i Source # 
Instance details

Defined in MonadLib.Monads

Methods

try :: Exception i a -> Exception i (Either i a) Source #

Monad m => RunExceptionM (ExceptionT i m) i Source # 
Instance details

Defined in MonadLib

Methods

try :: ExceptionT i m a -> ExceptionT i m (Either i a) Source #

RunExceptionM m i => RunExceptionM (ReaderT j m) i Source # 
Instance details

Defined in MonadLib

Methods

try :: ReaderT j m a -> ReaderT j m (Either i a) Source #

RunExceptionM m i => RunExceptionM (StateT j m) i Source # 
Instance details

Defined in MonadLib

Methods

try :: StateT j m a -> StateT j m (Either i a) Source #

(RunExceptionM m i, Monoid j) => RunExceptionM (WriterT j m) i Source # 
Instance details

Defined in MonadLib

Methods

try :: WriterT j m a -> WriterT j m (Either i a) Source #

Utility functions

asks :: ReaderM m r => (r -> a) -> m a Source #

Apply a function to the environment. Useful for accessing environmnt components.

puts :: WriterM m w => (a, w) -> m a Source #

Add content the output and return a result.

sets :: StateM m s => (s -> (a, s)) -> m a Source #

Update the state and return a result.

sets_ :: StateM m s => (s -> s) -> m () Source #

Updates the state with the given function.

raises :: ExceptionM m x => Either x a -> m a Source #

Either raise an exception or return a value. Left values signify the we should raise an exception, Right values indicate success.

mapReader :: RunReaderM m r => (r -> r) -> m a -> m a Source #

Modify the environment for the duration of a computation.

mapWriter :: RunWriterM m w => (w -> w) -> m a -> m a Source #

Modify the output of a computation.

mapException :: RunExceptionM m x => (x -> x) -> m a -> m a Source #

Modify the exception that was risen by a computation.

handle :: RunExceptionM m x => m a -> (x -> m a) -> m a Source #

Apply the given exception handler, if a computation raises an exception.

type family WithBase (base :: Type -> Type) (layers :: [(Type -> Type) -> Type -> Type]) :: Type -> Type where ... Source #

A convenience type family for defining stacks of monads. The first entry in the list is the top-most layer of the monad stack (i.e., the one that is furtherest from the base). For example:

newtype M a = M { unM ::
  WithBase IO
    '[ ReaderT    Int
     , StateT     Char
     , ExceptionT String
     ] a
  }

is equivalent to:

newtype M a = M { unM ::
  ReaderT    Int      (
  StateT     Char     (
  ExceptionT String
  IO                  )) a
  }

Equations

WithBase b ('[] :: [(Type -> Type) -> Type -> Type]) = b 
WithBase b (f ': fs) = f (WithBase b fs) 

class Applicative m => Monad (m :: Type -> Type) where #

Minimal complete definition

(>>=)

Methods

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

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

return :: a -> m a #

Instances

Instances details
Monad Complex 
Instance details

Defined in Data.Complex

Methods

(>>=) :: Complex a -> (a -> Complex b) -> Complex b #

(>>) :: Complex a -> Complex b -> Complex b #

return :: a -> Complex a #

Monad Identity 
Instance details

Defined in Data.Functor.Identity

Methods

(>>=) :: Identity a -> (a -> Identity b) -> Identity b #

(>>) :: Identity a -> Identity b -> Identity b #

return :: a -> Identity a #

Monad First 
Instance details

Defined in Data.Monoid

Methods

(>>=) :: First a -> (a -> First b) -> First b #

(>>) :: First a -> First b -> First b #

return :: a -> First a #

Monad Last 
Instance details

Defined in Data.Monoid

Methods

(>>=) :: Last a -> (a -> Last b) -> Last b #

(>>) :: Last a -> Last b -> Last b #

return :: a -> Last a #

Monad Down 
Instance details

Defined in Data.Ord

Methods

(>>=) :: Down a -> (a -> Down b) -> Down b #

(>>) :: Down a -> Down b -> Down b #

return :: a -> Down a #

Monad First 
Instance details

Defined in Data.Semigroup

Methods

(>>=) :: First a -> (a -> First b) -> First b #

(>>) :: First a -> First b -> First b #

return :: a -> First a #

Monad Last 
Instance details

Defined in Data.Semigroup

Methods

(>>=) :: Last a -> (a -> Last b) -> Last b #

(>>) :: Last a -> Last b -> Last b #

return :: a -> Last a #

Monad Max 
Instance details

Defined in Data.Semigroup

Methods

(>>=) :: Max a -> (a -> Max b) -> Max b #

(>>) :: Max a -> Max b -> Max b #

return :: a -> Max a #

Monad Min 
Instance details

Defined in Data.Semigroup

Methods

(>>=) :: Min a -> (a -> Min b) -> Min b #

(>>) :: Min a -> Min b -> Min b #

return :: a -> Min a #

Monad NonEmpty 
Instance details

Defined in GHC.Base

Methods

(>>=) :: NonEmpty a -> (a -> NonEmpty b) -> NonEmpty b #

(>>) :: NonEmpty a -> NonEmpty b -> NonEmpty b #

return :: a -> NonEmpty a #

Monad STM 
Instance details

Defined in GHC.Conc.Sync

Methods

(>>=) :: STM a -> (a -> STM b) -> STM b #

(>>) :: STM a -> STM b -> STM b #

return :: a -> STM a #

Monad NoIO 
Instance details

Defined in GHC.GHCi

Methods

(>>=) :: NoIO a -> (a -> NoIO b) -> NoIO b #

(>>) :: NoIO a -> NoIO b -> NoIO b #

return :: a -> NoIO a #

Monad Par1 
Instance details

Defined in GHC.Generics

Methods

(>>=) :: Par1 a -> (a -> Par1 b) -> Par1 b #

(>>) :: Par1 a -> Par1 b -> Par1 b #

return :: a -> Par1 a #

Monad P 
Instance details

Defined in Text.ParserCombinators.ReadP

Methods

(>>=) :: P a -> (a -> P b) -> P b #

(>>) :: P a -> P b -> P b #

return :: a -> P a #

Monad ReadP 
Instance details

Defined in Text.ParserCombinators.ReadP

Methods

(>>=) :: ReadP a -> (a -> ReadP b) -> ReadP b #

(>>) :: ReadP a -> ReadP b -> ReadP b #

return :: a -> ReadP a #

Monad ReadPrec 
Instance details

Defined in Text.ParserCombinators.ReadPrec

Methods

(>>=) :: ReadPrec a -> (a -> ReadPrec b) -> ReadPrec b #

(>>) :: ReadPrec a -> ReadPrec b -> ReadPrec b #

return :: a -> ReadPrec a #

Monad IO 
Instance details

Defined in GHC.Base

Methods

(>>=) :: IO a -> (a -> IO b) -> IO b #

(>>) :: IO a -> IO b -> IO b #

return :: a -> IO a #

Monad Id Source # 
Instance details

Defined in MonadLib

Methods

(>>=) :: Id a -> (a -> Id b) -> Id b #

(>>) :: Id a -> Id b -> Id b #

return :: a -> Id a #

Monad Lift Source # 
Instance details

Defined in MonadLib

Methods

(>>=) :: Lift a -> (a -> Lift b) -> Lift b #

(>>) :: Lift a -> Lift b -> Lift b #

return :: a -> Lift a #

Monad Maybe 
Instance details

Defined in GHC.Base

Methods

(>>=) :: Maybe a -> (a -> Maybe b) -> Maybe b #

(>>) :: Maybe a -> Maybe b -> Maybe b #

return :: a -> Maybe a #

Monad Solo 
Instance details

Defined in GHC.Base

Methods

(>>=) :: Solo a -> (a -> Solo b) -> Solo b #

(>>) :: Solo a -> Solo b -> Solo b #

return :: a -> Solo a #

Monad [] 
Instance details

Defined in GHC.Base

Methods

(>>=) :: [a] -> (a -> [b]) -> [b] #

(>>) :: [a] -> [b] -> [b] #

return :: a -> [a] #

Monad m => Monad (WrappedMonad m) 
Instance details

Defined in Control.Applicative

Methods

(>>=) :: WrappedMonad m a -> (a -> WrappedMonad m b) -> WrappedMonad m b #

(>>) :: WrappedMonad m a -> WrappedMonad m b -> WrappedMonad m b #

return :: a -> WrappedMonad m a #

ArrowApply a => Monad (ArrowMonad a) 
Instance details

Defined in Control.Arrow

Methods

(>>=) :: ArrowMonad a a0 -> (a0 -> ArrowMonad a b) -> ArrowMonad a b #

(>>) :: ArrowMonad a a0 -> ArrowMonad a b -> ArrowMonad a b #

return :: a0 -> ArrowMonad a a0 #

Monad (Either e) 
Instance details

Defined in Data.Either

Methods

(>>=) :: Either e a -> (a -> Either e b) -> Either e b #

(>>) :: Either e a -> Either e b -> Either e b #

return :: a -> Either e a #

Monad (Proxy :: Type -> Type) 
Instance details

Defined in Data.Proxy

Methods

(>>=) :: Proxy a -> (a -> Proxy b) -> Proxy b #

(>>) :: Proxy a -> Proxy b -> Proxy b #

return :: a -> Proxy a #

Monad (U1 :: Type -> Type) 
Instance details

Defined in GHC.Generics

Methods

(>>=) :: U1 a -> (a -> U1 b) -> U1 b #

(>>) :: U1 a -> U1 b -> U1 b #

return :: a -> U1 a #

Monad (ST s) 
Instance details

Defined in GHC.ST

Methods

(>>=) :: ST s a -> (a -> ST s b) -> ST s b #

(>>) :: ST s a -> ST s b -> ST s b #

return :: a -> ST s a #

Monad m => Monad (ChoiceT m) Source # 
Instance details

Defined in MonadLib

Methods

(>>=) :: ChoiceT m a -> (a -> ChoiceT m b) -> ChoiceT m b #

(>>) :: ChoiceT m a -> ChoiceT m b -> ChoiceT m b #

return :: a -> ChoiceT m a #

Monad m => Monad (IdT m) Source # 
Instance details

Defined in MonadLib

Methods

(>>=) :: IdT m a -> (a -> IdT m b) -> IdT m b #

(>>) :: IdT m a -> IdT m b -> IdT m b #

return :: a -> IdT m a #

Monad (Cont i) Source # 
Instance details

Defined in MonadLib.Monads

Methods

(>>=) :: Cont i a -> (a -> Cont i b) -> Cont i b #

(>>) :: Cont i a -> Cont i b -> Cont i b #

return :: a -> Cont i a #

Monad (Exception i) Source # 
Instance details

Defined in MonadLib.Monads

Methods

(>>=) :: Exception i a -> (a -> Exception i b) -> Exception i b #

(>>) :: Exception i a -> Exception i b -> Exception i b #

return :: a -> Exception i a #

Monad (Reader i) Source # 
Instance details

Defined in MonadLib.Monads

Methods

(>>=) :: Reader i a -> (a -> Reader i b) -> Reader i b #

(>>) :: Reader i a -> Reader i b -> Reader i b #

return :: a -> Reader i a #

Monad (State i) Source # 
Instance details

Defined in MonadLib.Monads

Methods

(>>=) :: State i a -> (a -> State i b) -> State i b #

(>>) :: State i a -> State i b -> State i b #

return :: a -> State i a #

Monoid i => Monad (Writer i) Source # 
Instance details

Defined in MonadLib.Monads

Methods

(>>=) :: Writer i a -> (a -> Writer i b) -> Writer i b #

(>>) :: Writer i a -> Writer i b -> Writer i b #

return :: a -> Writer i a #

Monoid a => Monad ((,) a) 
Instance details

Defined in GHC.Base

Methods

(>>=) :: (a, a0) -> (a0 -> (a, b)) -> (a, b) #

(>>) :: (a, a0) -> (a, b) -> (a, b) #

return :: a0 -> (a, a0) #

Monad m => Monad (Kleisli m a) 
Instance details

Defined in Control.Arrow

Methods

(>>=) :: Kleisli m a a0 -> (a0 -> Kleisli m a b) -> Kleisli m a b #

(>>) :: Kleisli m a a0 -> Kleisli m a b -> Kleisli m a b #

return :: a0 -> Kleisli m a a0 #

Monad f => Monad (Ap f) 
Instance details

Defined in Data.Monoid

Methods

(>>=) :: Ap f a -> (a -> Ap f b) -> Ap f b #

(>>) :: Ap f a -> Ap f b -> Ap f b #

return :: a -> Ap f a #

Monad f => Monad (Rec1 f) 
Instance details

Defined in GHC.Generics

Methods

(>>=) :: Rec1 f a -> (a -> Rec1 f b) -> Rec1 f b #

(>>) :: Rec1 f a -> Rec1 f b -> Rec1 f b #

return :: a -> Rec1 f a #

Monad m => Monad (ContT i m) Source # 
Instance details

Defined in MonadLib

Methods

(>>=) :: ContT i m a -> (a -> ContT i m b) -> ContT i m b #

(>>) :: ContT i m a -> ContT i m b -> ContT i m b #

return :: a -> ContT i m a #

Monad m => Monad (ExceptionT i m) Source # 
Instance details

Defined in MonadLib

Methods

(>>=) :: ExceptionT i m a -> (a -> ExceptionT i m b) -> ExceptionT i m b #

(>>) :: ExceptionT i m a -> ExceptionT i m b -> ExceptionT i m b #

return :: a -> ExceptionT i m a #

Monad m => Monad (ReaderT i m) Source # 
Instance details

Defined in MonadLib

Methods

(>>=) :: ReaderT i m a -> (a -> ReaderT i m b) -> ReaderT i m b #

(>>) :: ReaderT i m a -> ReaderT i m b -> ReaderT i m b #

return :: a -> ReaderT i m a #

Monad m => Monad (StateT i m) Source # 
Instance details

Defined in MonadLib

Methods

(>>=) :: StateT i m a -> (a -> StateT i m b) -> StateT i m b #

(>>) :: StateT i m a -> StateT i m b -> StateT i m b #

return :: a -> StateT i m a #

(Monad m, Monoid i) => Monad (WriterT i m) Source # 
Instance details

Defined in MonadLib

Methods

(>>=) :: WriterT i m a -> (a -> WriterT i m b) -> WriterT i m b #

(>>) :: WriterT i m a -> WriterT i m b -> WriterT i m b #

return :: a -> WriterT i m a #

(Monoid a, Monoid b) => Monad ((,,) a b) 
Instance details

Defined in GHC.Base

Methods

(>>=) :: (a, b, a0) -> (a0 -> (a, b, b0)) -> (a, b, b0) #

(>>) :: (a, b, a0) -> (a, b, b0) -> (a, b, b0) #

return :: a0 -> (a, b, a0) #

(Monad f, Monad g) => Monad (Product f g) 
Instance details

Defined in Data.Functor.Product

Methods

(>>=) :: Product f g a -> (a -> Product f g b) -> Product f g b #

(>>) :: Product f g a -> Product f g b -> Product f g b #

return :: a -> Product f g a #

(Monad f, Monad g) => Monad (f :*: g) 
Instance details

Defined in GHC.Generics

Methods

(>>=) :: (f :*: g) a -> (a -> (f :*: g) b) -> (f :*: g) b #

(>>) :: (f :*: g) a -> (f :*: g) b -> (f :*: g) b #

return :: a -> (f :*: g) a #

(Monoid a, Monoid b, Monoid c) => Monad ((,,,) a b c) 
Instance details

Defined in GHC.Base

Methods

(>>=) :: (a, b, c, a0) -> (a0 -> (a, b, c, b0)) -> (a, b, c, b0) #

(>>) :: (a, b, c, a0) -> (a, b, c, b0) -> (a, b, c, b0) #

return :: a0 -> (a, b, c, a0) #

Monad ((->) r) 
Instance details

Defined in GHC.Base

Methods

(>>=) :: (r -> a) -> (a -> r -> b) -> r -> b #

(>>) :: (r -> a) -> (r -> b) -> r -> b #

return :: a -> r -> a #

Monad f => Monad (M1 i c f) 
Instance details

Defined in GHC.Generics

Methods

(>>=) :: M1 i c f a -> (a -> M1 i c f b) -> M1 i c f b #

(>>) :: M1 i c f a -> M1 i c f b -> M1 i c f b #

return :: a -> M1 i c f a #

liftM :: Monad m => (a1 -> r) -> m a1 -> m r #

(=<<) :: Monad m => (a -> m b) -> m a -> m b #

class Functor (f :: Type -> Type) where #

Minimal complete definition

fmap

Methods

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

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

Instances

Instances details
Functor ZipList 
Instance details

Defined in Control.Applicative

Methods

fmap :: (a -> b) -> ZipList a -> ZipList b #

(<$) :: a -> ZipList b -> ZipList a #

Functor Handler 
Instance details

Defined in Control.Exception

Methods

fmap :: (a -> b) -> Handler a -> Handler b #

(<$) :: a -> Handler b -> Handler a #

Functor Complex 
Instance details

Defined in Data.Complex

Methods

fmap :: (a -> b) -> Complex a -> Complex b #

(<$) :: a -> Complex b -> Complex a #

Functor Identity 
Instance details

Defined in Data.Functor.Identity

Methods

fmap :: (a -> b) -> Identity a -> Identity b #

(<$) :: a -> Identity b -> Identity a #

Functor First 
Instance details

Defined in Data.Monoid

Methods

fmap :: (a -> b) -> First a -> First b #

(<$) :: a -> First b -> First a #

Functor Last 
Instance details

Defined in Data.Monoid

Methods

fmap :: (a -> b) -> Last a -> Last b #

(<$) :: a -> Last b -> Last a #

Functor Down 
Instance details

Defined in Data.Ord

Methods

fmap :: (a -> b) -> Down a -> Down b #

(<$) :: a -> Down b -> Down a #

Functor First 
Instance details

Defined in Data.Semigroup

Methods

fmap :: (a -> b) -> First a -> First b #

(<$) :: a -> First b -> First a #

Functor Last 
Instance details

Defined in Data.Semigroup

Methods

fmap :: (a -> b) -> Last a -> Last b #

(<$) :: a -> Last b -> Last a #

Functor Max 
Instance details

Defined in Data.Semigroup

Methods

fmap :: (a -> b) -> Max a -> Max b #

(<$) :: a -> Max b -> Max a #

Functor Min 
Instance details

Defined in Data.Semigroup

Methods

fmap :: (a -> b) -> Min a -> Min b #

(<$) :: a -> Min b -> Min a #

Functor NonEmpty 
Instance details

Defined in GHC.Base

Methods

fmap :: (a -> b) -> NonEmpty a -> NonEmpty b #

(<$) :: a -> NonEmpty b -> NonEmpty a #

Functor STM 
Instance details

Defined in GHC.Conc.Sync

Methods

fmap :: (a -> b) -> STM a -> STM b #

(<$) :: a -> STM b -> STM a #

Functor NoIO 
Instance details

Defined in GHC.GHCi

Methods

fmap :: (a -> b) -> NoIO a -> NoIO b #

(<$) :: a -> NoIO b -> NoIO a #

Functor Par1 
Instance details

Defined in GHC.Generics

Methods

fmap :: (a -> b) -> Par1 a -> Par1 b #

(<$) :: a -> Par1 b -> Par1 a #

Functor ArgDescr 
Instance details

Defined in System.Console.GetOpt

Methods

fmap :: (a -> b) -> ArgDescr a -> ArgDescr b #

(<$) :: a -> ArgDescr b -> ArgDescr a #

Functor ArgOrder 
Instance details

Defined in System.Console.GetOpt

Methods

fmap :: (a -> b) -> ArgOrder a -> ArgOrder b #

(<$) :: a -> ArgOrder b -> ArgOrder a #

Functor OptDescr 
Instance details

Defined in System.Console.GetOpt

Methods

fmap :: (a -> b) -> OptDescr a -> OptDescr b #

(<$) :: a -> OptDescr b -> OptDescr a #

Functor P 
Instance details

Defined in Text.ParserCombinators.ReadP

Methods

fmap :: (a -> b) -> P a -> P b #

(<$) :: a -> P b -> P a #

Functor ReadP 
Instance details

Defined in Text.ParserCombinators.ReadP

Methods

fmap :: (a -> b) -> ReadP a -> ReadP b #

(<$) :: a -> ReadP b -> ReadP a #

Functor ReadPrec 
Instance details

Defined in Text.ParserCombinators.ReadPrec

Methods

fmap :: (a -> b) -> ReadPrec a -> ReadPrec b #

(<$) :: a -> ReadPrec b -> ReadPrec a #

Functor IO 
Instance details

Defined in GHC.Base

Methods

fmap :: (a -> b) -> IO a -> IO b #

(<$) :: a -> IO b -> IO a #

Functor Id Source # 
Instance details

Defined in MonadLib

Methods

fmap :: (a -> b) -> Id a -> Id b #

(<$) :: a -> Id b -> Id a #

Functor Lift Source # 
Instance details

Defined in MonadLib

Methods

fmap :: (a -> b) -> Lift a -> Lift b #

(<$) :: a -> Lift b -> Lift a #

Functor Maybe 
Instance details

Defined in GHC.Base

Methods

fmap :: (a -> b) -> Maybe a -> Maybe b #

(<$) :: a -> Maybe b -> Maybe a #

Functor Solo 
Instance details

Defined in GHC.Base

Methods

fmap :: (a -> b) -> Solo a -> Solo b #

(<$) :: a -> Solo b -> Solo a #

Functor [] 
Instance details

Defined in GHC.Base

Methods

fmap :: (a -> b) -> [a] -> [b] #

(<$) :: a -> [b] -> [a] #

Monad m => Functor (WrappedMonad m) 
Instance details

Defined in Control.Applicative

Methods

fmap :: (a -> b) -> WrappedMonad m a -> WrappedMonad m b #

(<$) :: a -> WrappedMonad m b -> WrappedMonad m a #

Arrow a => Functor (ArrowMonad a) 
Instance details

Defined in Control.Arrow

Methods

fmap :: (a0 -> b) -> ArrowMonad a a0 -> ArrowMonad a b #

(<$) :: a0 -> ArrowMonad a b -> ArrowMonad a a0 #

Functor (Either a) 
Instance details

Defined in Data.Either

Methods

fmap :: (a0 -> b) -> Either a a0 -> Either a b #

(<$) :: a0 -> Either a b -> Either a a0 #

Functor (Proxy :: Type -> Type) 
Instance details

Defined in Data.Proxy

Methods

fmap :: (a -> b) -> Proxy a -> Proxy b #

(<$) :: a -> Proxy b -> Proxy a #

Functor (Arg a) 
Instance details

Defined in Data.Semigroup

Methods

fmap :: (a0 -> b) -> Arg a a0 -> Arg a b #

(<$) :: a0 -> Arg a b -> Arg a a0 #

Functor (Array i) 
Instance details

Defined in GHC.Arr

Methods

fmap :: (a -> b) -> Array i a -> Array i b #

(<$) :: a -> Array i b -> Array i a #

Functor (U1 :: Type -> Type) 
Instance details

Defined in GHC.Generics

Methods

fmap :: (a -> b) -> U1 a -> U1 b #

(<$) :: a -> U1 b -> U1 a #

Functor (V1 :: Type -> Type) 
Instance details

Defined in GHC.Generics

Methods

fmap :: (a -> b) -> V1 a -> V1 b #

(<$) :: a -> V1 b -> V1 a #

Functor (ST s) 
Instance details

Defined in GHC.ST

Methods

fmap :: (a -> b) -> ST s a -> ST s b #

(<$) :: a -> ST s b -> ST s a #

Monad m => Functor (ChoiceT m) Source # 
Instance details

Defined in MonadLib

Methods

fmap :: (a -> b) -> ChoiceT m a -> ChoiceT m b #

(<$) :: a -> ChoiceT m b -> ChoiceT m a #

Monad m => Functor (IdT m) Source # 
Instance details

Defined in MonadLib

Methods

fmap :: (a -> b) -> IdT m a -> IdT m b #

(<$) :: a -> IdT m b -> IdT m a #

Functor (Cont i) Source # 
Instance details

Defined in MonadLib.Monads

Methods

fmap :: (a -> b) -> Cont i a -> Cont i b #

(<$) :: a -> Cont i b -> Cont i a #

Functor (Exception i) Source # 
Instance details

Defined in MonadLib.Monads

Methods

fmap :: (a -> b) -> Exception i a -> Exception i b #

(<$) :: a -> Exception i b -> Exception i a #

Functor (Reader i) Source # 
Instance details

Defined in MonadLib.Monads

Methods

fmap :: (a -> b) -> Reader i a -> Reader i b #

(<$) :: a -> Reader i b -> Reader i a #

Functor (State i) Source # 
Instance details

Defined in MonadLib.Monads

Methods

fmap :: (a -> b) -> State i a -> State i b #

(<$) :: a -> State i b -> State i a #

Monoid i => Functor (Writer i) Source # 
Instance details

Defined in MonadLib.Monads

Methods

fmap :: (a -> b) -> Writer i a -> Writer i b #

(<$) :: a -> Writer i b -> Writer i a #

Functor ((,) a) 
Instance details

Defined in GHC.Base

Methods

fmap :: (a0 -> b) -> (a, a0) -> (a, b) #

(<$) :: a0 -> (a, b) -> (a, a0) #

Arrow a => Functor (WrappedArrow a b) 
Instance details

Defined in Control.Applicative

Methods

fmap :: (a0 -> b0) -> WrappedArrow a b a0 -> WrappedArrow a b b0 #

(<$) :: a0 -> WrappedArrow a b b0 -> WrappedArrow a b a0 #

Functor m => Functor (Kleisli m a) 
Instance details

Defined in Control.Arrow

Methods

fmap :: (a0 -> b) -> Kleisli m a a0 -> Kleisli m a b #

(<$) :: a0 -> Kleisli m a b -> Kleisli m a a0 #

Functor (Const m :: Type -> Type) 
Instance details

Defined in Data.Functor.Const

Methods

fmap :: (a -> b) -> Const m a -> Const m b #

(<$) :: a -> Const m b -> Const m a #

Functor f => Functor (Ap f) 
Instance details

Defined in Data.Monoid

Methods

fmap :: (a -> b) -> Ap f a -> Ap f b #

(<$) :: a -> Ap f b -> Ap f a #

(Generic1 f, Functor (Rep1 f)) => Functor (Generically1 f) 
Instance details

Defined in GHC.Generics

Methods

fmap :: (a -> b) -> Generically1 f a -> Generically1 f b #

(<$) :: a -> Generically1 f b -> Generically1 f a #

Functor f => Functor (Rec1 f) 
Instance details

Defined in GHC.Generics

Methods

fmap :: (a -> b) -> Rec1 f a -> Rec1 f b #

(<$) :: a -> Rec1 f b -> Rec1 f a #

Functor (URec (Ptr ()) :: Type -> Type) 
Instance details

Defined in GHC.Generics

Methods

fmap :: (a -> b) -> URec (Ptr ()) a -> URec (Ptr ()) b #

(<$) :: a -> URec (Ptr ()) b -> URec (Ptr ()) a #

Functor (URec Char :: Type -> Type) 
Instance details

Defined in GHC.Generics

Methods

fmap :: (a -> b) -> URec Char a -> URec Char b #

(<$) :: a -> URec Char b -> URec Char a #

Functor (URec Double :: Type -> Type) 
Instance details

Defined in GHC.Generics

Methods

fmap :: (a -> b) -> URec Double a -> URec Double b #

(<$) :: a -> URec Double b -> URec Double a #

Functor (URec Float :: Type -> Type) 
Instance details

Defined in GHC.Generics

Methods

fmap :: (a -> b) -> URec Float a -> URec Float b #

(<$) :: a -> URec Float b -> URec Float a #

Functor (URec Int :: Type -> Type) 
Instance details

Defined in GHC.Generics

Methods

fmap :: (a -> b) -> URec Int a -> URec Int b #

(<$) :: a -> URec Int b -> URec Int a #

Functor (URec Word :: Type -> Type) 
Instance details

Defined in GHC.Generics

Methods

fmap :: (a -> b) -> URec Word a -> URec Word b #

(<$) :: a -> URec Word b -> URec Word a #

Monad m => Functor (ContT i m) Source # 
Instance details

Defined in MonadLib

Methods

fmap :: (a -> b) -> ContT i m a -> ContT i m b #

(<$) :: a -> ContT i m b -> ContT i m a #

Monad m => Functor (ExceptionT i m) Source # 
Instance details

Defined in MonadLib

Methods

fmap :: (a -> b) -> ExceptionT i m a -> ExceptionT i m b #

(<$) :: a -> ExceptionT i m b -> ExceptionT i m a #

Monad m => Functor (ReaderT i m) Source # 
Instance details

Defined in MonadLib

Methods

fmap :: (a -> b) -> ReaderT i m a -> ReaderT i m b #

(<$) :: a -> ReaderT i m b -> ReaderT i m a #

Monad m => Functor (StateT i m) Source # 
Instance details

Defined in MonadLib

Methods

fmap :: (a -> b) -> StateT i m a -> StateT i m b #

(<$) :: a -> StateT i m b -> StateT i m a #

(Monad m, Monoid i) => Functor (WriterT i m) Source # 
Instance details

Defined in MonadLib

Methods

fmap :: (a -> b) -> WriterT i m a -> WriterT i m b #

(<$) :: a -> WriterT i m b -> WriterT i m a #

Functor ((,,) a b) 
Instance details

Defined in GHC.Base

Methods

fmap :: (a0 -> b0) -> (a, b, a0) -> (a, b, b0) #

(<$) :: a0 -> (a, b, b0) -> (a, b, a0) #

(Functor f, Functor g) => Functor (Product f g) 
Instance details

Defined in Data.Functor.Product

Methods

fmap :: (a -> b) -> Product f g a -> Product f g b #

(<$) :: a -> Product f g b -> Product f g a #

(Functor f, Functor g) => Functor (Sum f g) 
Instance details

Defined in Data.Functor.Sum

Methods

fmap :: (a -> b) -> Sum f g a -> Sum f g b #

(<$) :: a -> Sum f g b -> Sum f g a #

(Functor f, Functor g) => Functor (f :*: g) 
Instance details

Defined in GHC.Generics

Methods

fmap :: (a -> b) -> (f :*: g) a -> (f :*: g) b #

(<$) :: a -> (f :*: g) b -> (f :*: g) a #

(Functor f, Functor g) => Functor (f :+: g) 
Instance details

Defined in GHC.Generics

Methods

fmap :: (a -> b) -> (f :+: g) a -> (f :+: g) b #

(<$) :: a -> (f :+: g) b -> (f :+: g) a #

Functor (K1 i c :: Type -> Type) 
Instance details

Defined in GHC.Generics

Methods

fmap :: (a -> b) -> K1 i c a -> K1 i c b #

(<$) :: a -> K1 i c b -> K1 i c a #

Functor ((,,,) a b c) 
Instance details

Defined in GHC.Base

Methods

fmap :: (a0 -> b0) -> (a, b, c, a0) -> (a, b, c, b0) #

(<$) :: a0 -> (a, b, c, b0) -> (a, b, c, a0) #

Functor ((->) r) 
Instance details

Defined in GHC.Base

Methods

fmap :: (a -> b) -> (r -> a) -> r -> b #

(<$) :: a -> (r -> b) -> r -> a #

(Functor f, Functor g) => Functor (Compose f g) 
Instance details

Defined in Data.Functor.Compose

Methods

fmap :: (a -> b) -> Compose f g a -> Compose f g b #

(<$) :: a -> Compose f g b -> Compose f g a #

(Functor f, Functor g) => Functor (f :.: g) 
Instance details

Defined in GHC.Generics

Methods

fmap :: (a -> b) -> (f :.: g) a -> (f :.: g) b #

(<$) :: a -> (f :.: g) b -> (f :.: g) a #

Functor f => Functor (M1 i c f) 
Instance details

Defined in GHC.Generics

Methods

fmap :: (a -> b) -> M1 i c f a -> M1 i c f b #

(<$) :: a -> M1 i c f b -> M1 i c f a #

Functor ((,,,,) a b c d) 
Instance details

Defined in GHC.Base

Methods

fmap :: (a0 -> b0) -> (a, b, c, d, a0) -> (a, b, c, d, b0) #

(<$) :: a0 -> (a, b, c, d, b0) -> (a, b, c, d, a0) #

Functor ((,,,,,) a b c d e) 
Instance details

Defined in GHC.Base

Methods

fmap :: (a0 -> b0) -> (a, b, c, d, e, a0) -> (a, b, c, d, e, b0) #

(<$) :: a0 -> (a, b, c, d, e, b0) -> (a, b, c, d, e, a0) #

Functor ((,,,,,,) a b c d e f) 
Instance details

Defined in GHC.Base

Methods

fmap :: (a0 -> b0) -> (a, b, c, d, e, f, a0) -> (a, b, c, d, e, f, b0) #

(<$) :: a0 -> (a, b, c, d, e, f, b0) -> (a, b, c, d, e, f, a0) #

class (Alternative m, Monad m) => MonadPlus (m :: Type -> Type) where #

Minimal complete definition

Nothing

Methods

mzero :: m a #

mplus :: m a -> m a -> m a #

Instances

Instances details
MonadPlus STM 
Instance details

Defined in GHC.Conc.Sync

Methods

mzero :: STM a #

mplus :: STM a -> STM a -> STM a #

MonadPlus P 
Instance details

Defined in Text.ParserCombinators.ReadP

Methods

mzero :: P a #

mplus :: P a -> P a -> P a #

MonadPlus ReadP 
Instance details

Defined in Text.ParserCombinators.ReadP

Methods

mzero :: ReadP a #

mplus :: ReadP a -> ReadP a -> ReadP a #

MonadPlus ReadPrec 
Instance details

Defined in Text.ParserCombinators.ReadPrec

Methods

mzero :: ReadPrec a #

mplus :: ReadPrec a -> ReadPrec a -> ReadPrec a #

MonadPlus IO 
Instance details

Defined in GHC.Base

Methods

mzero :: IO a #

mplus :: IO a -> IO a -> IO a #

MonadPlus Maybe 
Instance details

Defined in GHC.Base

Methods

mzero :: Maybe a #

mplus :: Maybe a -> Maybe a -> Maybe a #

MonadPlus [] 
Instance details

Defined in GHC.Base

Methods

mzero :: [a] #

mplus :: [a] -> [a] -> [a] #

(ArrowApply a, ArrowPlus a) => MonadPlus (ArrowMonad a) 
Instance details

Defined in Control.Arrow

Methods

mzero :: ArrowMonad a a0 #

mplus :: ArrowMonad a a0 -> ArrowMonad a a0 -> ArrowMonad a a0 #

MonadPlus (Proxy :: Type -> Type) 
Instance details

Defined in Data.Proxy

Methods

mzero :: Proxy a #

mplus :: Proxy a -> Proxy a -> Proxy a #

MonadPlus (U1 :: Type -> Type) 
Instance details

Defined in GHC.Generics

Methods

mzero :: U1 a #

mplus :: U1 a -> U1 a -> U1 a #

Monad m => MonadPlus (ChoiceT m) Source # 
Instance details

Defined in MonadLib

Methods

mzero :: ChoiceT m a #

mplus :: ChoiceT m a -> ChoiceT m a -> ChoiceT m a #

MonadPlus m => MonadPlus (IdT m) Source # 
Instance details

Defined in MonadLib

Methods

mzero :: IdT m a #

mplus :: IdT m a -> IdT m a -> IdT m a #

MonadPlus m => MonadPlus (Kleisli m a) 
Instance details

Defined in Control.Arrow

Methods

mzero :: Kleisli m a a0 #

mplus :: Kleisli m a a0 -> Kleisli m a a0 -> Kleisli m a a0 #

MonadPlus f => MonadPlus (Ap f) 
Instance details

Defined in Data.Monoid

Methods

mzero :: Ap f a #

mplus :: Ap f a -> Ap f a -> Ap f a #

MonadPlus f => MonadPlus (Rec1 f) 
Instance details

Defined in GHC.Generics

Methods

mzero :: Rec1 f a #

mplus :: Rec1 f a -> Rec1 f a -> Rec1 f a #

MonadPlus m => MonadPlus (ContT i m) Source # 
Instance details

Defined in MonadLib

Methods

mzero :: ContT i m a #

mplus :: ContT i m a -> ContT i m a -> ContT i m a #

MonadPlus m => MonadPlus (ExceptionT i m) Source # 
Instance details

Defined in MonadLib

Methods

mzero :: ExceptionT i m a #

mplus :: ExceptionT i m a -> ExceptionT i m a -> ExceptionT i m a #

MonadPlus m => MonadPlus (ReaderT i m) Source # 
Instance details

Defined in MonadLib

Methods

mzero :: ReaderT i m a #

mplus :: ReaderT i m a -> ReaderT i m a -> ReaderT i m a #

MonadPlus m => MonadPlus (StateT i m) Source # 
Instance details

Defined in MonadLib

Methods

mzero :: StateT i m a #

mplus :: StateT i m a -> StateT i m a -> StateT i m a #

(MonadPlus m, Monoid i) => MonadPlus (WriterT i m) Source # 
Instance details

Defined in MonadLib

Methods

mzero :: WriterT i m a #

mplus :: WriterT i m a -> WriterT i m a -> WriterT i m a #

(MonadPlus f, MonadPlus g) => MonadPlus (Product f g) 
Instance details

Defined in Data.Functor.Product

Methods

mzero :: Product f g a #

mplus :: Product f g a -> Product f g a -> Product f g a #

(MonadPlus f, MonadPlus g) => MonadPlus (f :*: g) 
Instance details

Defined in GHC.Generics

Methods

mzero :: (f :*: g) a #

mplus :: (f :*: g) a -> (f :*: g) a -> (f :*: g) a #

MonadPlus f => MonadPlus (M1 i c f) 
Instance details

Defined in GHC.Generics

Methods

mzero :: M1 i c f a #

mplus :: M1 i c f a -> M1 i c f a -> M1 i c f a #

ap :: Monad m => m (a -> b) -> m a -> m b #

class Monad m => MonadFail (m :: Type -> Type) where #

Methods

fail :: String -> m a #

Instances

Instances details
MonadFail P 
Instance details

Defined in Text.ParserCombinators.ReadP

Methods

fail :: String -> P a #

MonadFail ReadP 
Instance details

Defined in Text.ParserCombinators.ReadP

Methods

fail :: String -> ReadP a #

MonadFail ReadPrec 
Instance details

Defined in Text.ParserCombinators.ReadPrec

Methods

fail :: String -> ReadPrec a #

MonadFail IO 
Instance details

Defined in Control.Monad.Fail

Methods

fail :: String -> IO a #

MonadFail Maybe 
Instance details

Defined in Control.Monad.Fail

Methods

fail :: String -> Maybe a #

MonadFail [] 
Instance details

Defined in Control.Monad.Fail

Methods

fail :: String -> [a] #

MonadFail m => MonadFail (ChoiceT m) Source # 
Instance details

Defined in MonadLib

Methods

fail :: String -> ChoiceT m a #

MonadFail m => MonadFail (IdT m) Source # 
Instance details

Defined in MonadLib

Methods

fail :: String -> IdT m a #

MonadFail f => MonadFail (Ap f) 
Instance details

Defined in Data.Monoid

Methods

fail :: String -> Ap f a #

MonadFail m => MonadFail (ContT i m) Source # 
Instance details

Defined in MonadLib

Methods

fail :: String -> ContT i m a #

MonadFail m => MonadFail (ExceptionT i m) Source # 
Instance details

Defined in MonadLib

Methods

fail :: String -> ExceptionT i m a #

MonadFail m => MonadFail (ReaderT i m) Source # 
Instance details

Defined in MonadLib

Methods

fail :: String -> ReaderT i m a #

MonadFail m => MonadFail (StateT i m) Source # 
Instance details

Defined in MonadLib

Methods

fail :: String -> StateT i m a #

(Monoid i, MonadFail m) => MonadFail (WriterT i m) Source # 
Instance details

Defined in MonadLib

Methods

fail :: String -> WriterT i m a #

liftM2 :: Monad m => (a1 -> a2 -> r) -> m a1 -> m a2 -> m r #

join :: Monad m => m (m a) -> m a #

forM_ :: (Foldable t, Monad m) => t a -> (a -> m b) -> m () #

mapM_ :: (Foldable t, Monad m) => (a -> m b) -> t a -> m () #

msum :: (Foldable t, MonadPlus m) => t (m a) -> m a #

sequence_ :: (Foldable t, Monad m) => t (m a) -> m () #

void :: Functor f => f a -> f () #

forM :: (Traversable t, Monad m) => t a -> (a -> m b) -> m (t b) #

mapM :: (Traversable t, Monad m) => (a -> m b) -> t a -> m (t b) #

sequence :: (Traversable t, Monad m) => t (m a) -> m (t a) #

liftM3 :: Monad m => (a1 -> a2 -> a3 -> r) -> m a1 -> m a2 -> m a3 -> m r #

liftM4 :: Monad m => (a1 -> a2 -> a3 -> a4 -> r) -> m a1 -> m a2 -> m a3 -> m a4 -> m r #

liftM5 :: Monad m => (a1 -> a2 -> a3 -> a4 -> a5 -> r) -> m a1 -> m a2 -> m a3 -> m a4 -> m a5 -> m r #

when :: Applicative f => Bool -> f () -> f () #

(<$!>) :: Monad m => (a -> b) -> m a -> m b #

(<=<) :: Monad m => (b -> m c) -> (a -> m b) -> a -> m c #

(>=>) :: Monad m => (a -> m b) -> (b -> m c) -> a -> m c #

foldM :: (Foldable t, Monad m) => (b -> a -> m b) -> b -> t a -> m b #

foldM_ :: (Foldable t, Monad m) => (b -> a -> m b) -> b -> t a -> m () #

replicateM :: Applicative m => Int -> m a -> m [a] #

replicateM_ :: Applicative m => Int -> m a -> m () #

unless :: Applicative f => Bool -> f () -> f () #

filterM :: Applicative m => (a -> m Bool) -> [a] -> m [a] #

forever :: Applicative f => f a -> f b #

mapAndUnzipM :: Applicative m => (a -> m (b, c)) -> [a] -> m ([b], [c]) #

mfilter :: MonadPlus m => (a -> Bool) -> m a -> m a #

zipWithM :: Applicative m => (a -> b -> m c) -> [a] -> [b] -> m [c] #

zipWithM_ :: Applicative m => (a -> b -> m c) -> [a] -> [b] -> m () #

guard :: Alternative f => Bool -> f () #