Control.Monad.Trans.MonadPlus
Description
MonadPlus transformers. There are also Monad and MonadFix transformes, see the corresponding modules.
Note that each MonadPlus transformer is also a Monad transformer.
Documentation
MonadP m is actually a free MonadPlus generated by m. MonadP is a monad itself (on the (* -> *) category), as usually happens with free structures.
class TransM t => TransP t whereSource
A composable MonadPlus transformer.
Methods
transPInst :: MonadPlus m => Inst MonadP (t m)Source
You shoudn't (and probably can't) use *anything* except for , defined in this very module, as instPtransPInst.
If you define instance TransP T where transPInst = instP, then you would also need to define instance MonadPlus m => MonadPlus (T m) somewhere in your code.
instP :: MonadPlus m => Inst MonadP mSource
A MonadPlus is nothing but an algebra over the MonadP monad. instP provides it's structure map.