Maintainer | Nickolay Kudasov <nickolay@getshoptv.com> |
---|---|
Stability | experimental |
Safe Haskell | Safe-Inferred |
Language | Haskell2010 |
Declare monad transformer and associated functions.
Synopsis
-
newtype
DeclareT
d m a =
DeclareT
{
- runDeclareT :: d -> m (d, a)
- class ( Applicative m, Monad m) => MonadDeclare d m | m -> d where
- liftDeclare :: MonadDeclare d m => Declare d a -> m a
- looks :: MonadDeclare d m => (d -> a) -> m a
- evalDeclareT :: Monad m => DeclareT d m a -> d -> m a
- execDeclareT :: Monad m => DeclareT d m a -> d -> m d
- undeclareT :: ( Monad m, Monoid d) => DeclareT d m a -> m a
- type Declare d = DeclareT d Identity
- runDeclare :: Declare d a -> d -> (d, a)
- evalDeclare :: Declare d a -> d -> a
- execDeclare :: Declare d a -> d -> d
- undeclare :: Monoid d => Declare d a -> a
Documentation
newtype DeclareT d m a Source #
A declare monad transformer parametrized by:
-
d
— the output to accumulate (declarations); -
m
— the inner monad.
This monad transformer is similar to both state and writer monad transformers. Thus it can be seen as
- a restricted append-only version of a state monad transformer or
- a writer monad transformer with the extra ability to read all previous output.
DeclareT | |
|
Instances
( Applicative m, Monad m, Monoid d) => MonadDeclare d ( DeclareT d m) Source # | |
Monoid d => MonadTrans ( DeclareT d) Source # | |
( Applicative m, Monad m, Monoid d) => Monad ( DeclareT d m) Source # | |
Functor m => Functor ( DeclareT d m) Source # | |
( Applicative m, Monad m, Monoid d) => Applicative ( DeclareT d m) Source # | |
Defined in Data.OpenApi.Declare pure :: a -> DeclareT d m a Source # (<*>) :: DeclareT d m (a -> b) -> DeclareT d m a -> DeclareT d m b Source # liftA2 :: (a -> b -> c) -> DeclareT d m a -> DeclareT d m b -> DeclareT d m c Source # (*>) :: DeclareT d m a -> DeclareT d m b -> DeclareT d m b Source # (<*) :: DeclareT d m a -> DeclareT d m b -> DeclareT d m a Source # |
class ( Applicative m, Monad m) => MonadDeclare d m | m -> d where Source #
Definitions of
declare
and
look
must satisfy the following laws:
is an action that produces the output
declare
x
x
.
is an action that returns all the output so far.
look
Instances
MonadDeclare d m => MonadDeclare d ( MaybeT m) Source # | |
( Monoid w, MonadDeclare d m) => MonadDeclare d ( WriterT w m) Source # | |
( Monoid w, MonadDeclare d m) => MonadDeclare d ( WriterT w m) Source # | |
MonadDeclare d m => MonadDeclare d ( StateT s m) Source # | |
MonadDeclare d m => MonadDeclare d ( StateT s m) Source # | |
MonadDeclare d m => MonadDeclare d ( ReaderT r m) Source # | |
MonadDeclare d m => MonadDeclare d ( IdentityT m) Source # | |
MonadDeclare d m => MonadDeclare d ( ExceptT e m) Source # | |
( Applicative m, Monad m, Monoid d) => MonadDeclare d ( DeclareT d m) Source # | |
MonadDeclare d m => MonadDeclare d ( ContT r m) Source # | |
( Monoid w, MonadDeclare d m) => MonadDeclare d ( RWST r w s m) Source # | |
( Monoid w, MonadDeclare d m) => MonadDeclare d ( RWST r w s m) Source # | |
liftDeclare :: MonadDeclare d m => Declare d a -> m a Source #
Lift a computation from the simple Declare monad.
looks :: MonadDeclare d m => (d -> a) -> m a Source #
Retrieve a function of all the output so far.
evalDeclareT :: Monad m => DeclareT d m a -> d -> m a Source #
Evaluate
computation,
ignoring new output
DeclareT
d m a
d
.
execDeclareT :: Monad m => DeclareT d m a -> d -> m d Source #
Execute
computation,
ignoring result and only producing new output
DeclateT
d m a
d
.
undeclareT :: ( Monad m, Monoid d) => DeclareT d m a -> m a Source #
Evaluate
computation,
starting with empty output history.
DeclareT
d m a
type Declare d = DeclareT d Identity Source #
A declare monad parametrized by
d
— the output to accumulate (declarations).
This monad is similar to both state and writer monads. Thus it can be seen as
- a restricted append-only version of a state monad or
- a writer monad with the extra ability to read all previous output.
runDeclare :: Declare d a -> d -> (d, a) Source #
Run
computation with output history
Declare
d a
d
,
producing result
a
and new output
d
.
evalDeclare :: Declare d a -> d -> a Source #
Evaluate
computation, ignoring output
Declare
d a
d
.
execDeclare :: Declare d a -> d -> d Source #
Execute
computation, ignoring result and only
producing output
Declate
d a
d
.