From the documentation of the validation package:
The
AccValidationdata type is isomorphic toEither, but has an instance ofApplicativethat accumulates on the error side. That is to say, if two (or more) errors are encountered, they are appended using aSemigroupoperation.As a consequence of this
Applicativeinstance, there is no correspondingBindorMonadinstance.AccValidationis an example of, "An applicative functor that is not a monad."
It isn't evident to me why this is a consequence. I can imagine a Monad instance for AccValidation that behaves like Either - What would make this unlawful?