|The Haskell Wiki||FrontPage||RecentChanges||TitleIndex||WordIndex||SiteNavigation||HelpContents|
A library of useful and highly parameterized monads and written by AndyGill.
The monads include:
All monads in the MonadTemplateLibrary (except the IdentityMonad) have associated MonadTransformers.
...but why have non-transformer monads? All MonadTransformers can be un-transformed with the IdentityMonad -- e.g.:
type State s a = StateT s Identity a
Potentially efficiency, and (slight) convenience unless the library provides both. If the library provides both then how it's implemented hardly matters, if it doesn't then to use State, you'd have to runIdentity . flip runStateT state and for the list transformer you couldn't just use [a] you'd have to have ListT Identity a. Nevertheless, a new Control.Monad.* library being developed does define everything in terms of MonadTransformers. So long story short quite often you just want an untransformed monad and any decent library should transparently provide it, it's an implementation issue on how it's, well, implemented.
-- Derek Elkins
Some related classes...
Currently distributed along with the GlasgowHaskellCompiler. Maybe it should be included in HaskellTwo.