Portability | portable |
---|---|

Stability | experimental |

Maintainer | Edward Kmett <ekmett@gmail.com> |

Safe Haskell | Safe-Inferred |

This module provides the `Bound`

class, for performing substitution into
things that are not necessarily full monad transformers.

# Documentation

Instances of `Bound`

may or may not be monad transformers.

If they are, then `m `

is required to hold, and is
in fact the default definition. If it is not a `>>>=`

f ≡ m `>>=`

`lift`

`.`

f`MonadTrans`

instance, then
you have greater flexibility in how to implement this class.

This is useful for types like expression lists, case alternatives, schemas, etc. that may not be expressions in their own right, but often contain expressions.