MaybeT package:transformers

The parameterizable maybe monad, a strict monad obtained by composing an arbitrary monad with the Maybe monad. Computations are actions that may produce a value or exit. The return function yields a computation that produces that value, while >>= sequences two subcomputations, exiting if either computation does.
Convert a MaybeT computation to ExceptT, with a default exception value.
Convert a ExceptT computation to MaybeT, discarding the value of any exception.
Transform the computation inside a MaybeT.