Add monad definitions.
Explain how the do notation is implemented.