Maybe package:transformers

The MaybeT monad transformer extends a monad with the ability to exit the computation without returning a value. A sequence of actions produces a value only if all the actions in the sequence do. If one exits, the rest of the sequence is skipped and the composite action exits. For a variant allowing a range of exception values, see Control.Monad.Trans.Except.
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.
Convert a Maybe computation to MaybeT.
Transform the computation inside a MaybeT.