Monads are a way to chain functions together. Maybe monad (from Haskell) is used to chain functions together when the functions might fail. It assumes:
- If I have Nothing, stop computing.
- If I have Something, pass it to next function.
- That function may return Something or Nothing. Go back to Step 1.
x ||= y # x = y unless x