The parameterizable maybe 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.