This module provides three different datatypes: AEither is the
applicative version of Either. It does not provide a monad instance, and
mappends together error values. MEither is the monadic version, which
only holds onto the first error value. MEitherT is a monad transformer.