Copyright | (c) Ross Paterson 2012 |
---|---|
License | BSD-style (see the file LICENSE) |
Maintainer | R.Paterson@city.ac.uk |
Stability | experimental |
Portability | portable |
Safe Haskell | Safe |
Language | Haskell98 |
Signatures for monad operations that require specialized lifting. Each signature has a uniformity property that the lifting should satisfy.
Documentation
type CallCC m a b = ((a -> m b) -> m a) -> m a Source #
Signature of the callCC
operation,
introduced in Control.Monad.Trans.Cont.
Any lifting function liftCallCC
should satisfy
lift
(f k) = f' (lift
. k) =>lift
(cf f) = liftCallCC cf f'
type Catch e m a = m a -> (e -> m a) -> m a Source #
Signature of the catchE
operation,
introduced in Control.Monad.Trans.Except.
Any lifting function liftCatch
should satisfy
lift
(cf m f) = liftCatch (lift
. cf) (lift
f)
type Listen w m a = m a -> m (a, w) Source #
Signature of the listen
operation,
introduced in Control.Monad.Trans.Writer.
Any lifting function liftListen
should satisfy
lift
. liftListen = liftListen .lift
type Pass w m a = m (a, w -> w) -> m a Source #
Signature of the pass
operation,
introduced in Control.Monad.Trans.Writer.
Any lifting function liftPass
should satisfy
lift
. liftPass = liftPass .lift