The parameterizable exception monad, which is strict.
Computations are either exceptions (of any type) or normal values. These computations are plain values, and are unrelated to the Control.Exception mechanism, which is tied to the IO monad.
The return function returns a normal value, while >>= exits on
the first exception. For a variant that continues after an error
and collects all the errors, see Errors.