rmonad provides a restricted monad class in the Control.RMonad hierarchy.
The class makes use of associated datatypes (available in GHC 6.8),
using an idea learnt from Wolfgang Jeltsch:
It also provides a way to treat a restricted monad as a normal monad
using a generic wrapper type. This idea is described here:
See the haddock documentation for information on how to use it.
darcs get http://code.haskell.org/rmonad
Add instances for all the mtl stuff. Consider also doing this for mtl-tf
Add all the normal monad combinators
Should we use Monad etc rather than RMonad etc for naming?
- Pro: standard modern namespacing conventions
- Anti: Module names need to be different to allow co-existence
Do we actually want RApplicative etc? Nasty because most restrictions aren't much use on function types
DSELs are a good example of where Suitable could be closed over function types