# Package com.jnape.palatable.lambda.monad

- Interface Summary
  Interface | Description
  --- | ---
  Monad<A,M extends Monad<?,M>> | Monads are `Applicative` functors that support a flattening operation to unwrap `M<M<A>> -> M<A>`.
  MonadBase<M extends MonadRec<?,M>,A,MB extends MonadBase<?,?,MB>> | A type into which a `MonadRec` is embedded whilst internally preserving the `MonadRec` structure.
  MonadError<E,A,M extends MonadError<E,?,M>> | An interface for `monads` that can be interrupted with some type of error.
  MonadReader<R,A,MR extends MonadReader<R,?,MR>> | A monad that is capable of reading an environment `R` and producing a lifted value `A`.
  MonadRec<A,M extends MonadRec<?,M>> | A class of `monads` that offer a stack-safe interface for performing arbitrarily many `flatmap-like` operations via `MonadRec.trampolineM(Fn1)`.
  MonadWriter<W,A,MW extends MonadWriter<W,?,MW>> | A `Monad` that is capable of writing and accumulating state alongside a value, but is not necessarily capable of simultaneously accessing the state and the value.

- Class Summary
  Class | Description
  --- | ---
  SafeT<M extends MonadRec<?,M>,A> | A stack-safe `monad transformer` that can safely interpret deeply nested left- or right-associated binds for any `MonadRec`.