| 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 | Haskell2010 |
Control.Monad.Signatures
Description
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'
This implies that on entry to the continuation any outer monad
transformer effect inside callCC will have been rolled back.
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 h) = liftCatch cf (liftm) (lift. h)
This implies that on entry to the handler function any outer monad
transformer effect inside catchE will have been rolled back.