Why isn't Validation a Monad?
As discussed in the Scalaz group, the problem seems to be that ap
would accumulate errors whereas (pseudo-)monadic composition would only operate on the value part of Validation
.
Therefore, one cannot be expressed in terms of the other and thus no monad instance exists for Validation
.
The issue is that the applicative functor as implied by the monad does not equal the actual applicative functor