If, when we chain together a number of
computations over Maybe using (>>=) or (>>), any of them returns
Nothing, we don’t evaluate any of the remaining computations.

Note, though, that the chain is not
completely short-circuited. Each (>>=) or (>>) in the chain will still match a
Nothing on its left and produce a Nothing on its right, all the way to the end.
It’s easy to forget this point: when a computation in the chain fails,
the subsequent production, chaining, and consumption of
Nothing values are cheap at runtime, but they’re not
free.

Executing the Maybe Monad

A function suitable for executing the
Maybe monad is maybe. (Remember that
“executing” a monad involves evaluating it and returning
a result that’s had the monad’s type wrapper removed.)