dlaczego Walidacja nie jest Monadą? (scalaz7)

przykładowy przypadek użycia:

def div2(i: Int): Validation[String, Int] = 
    if (i%2 == 0) Validation.success(i/2)
    else Validation.failure("odd")

def div4(i: Int) = for {
    a <- div2(i)
    b <- div2(a)
} yield b

błąd: Nie można anulować wpisaniascalaz.Validation[String,Int] w konstruktor rodzajuM[_] to jest klasyfikowane przez klasę typuscalaz.Bind

I odgadnąć błąd jest spowodowany przez kompilator nie może znaleźćMonad przykładValidation[String, Int]

Mogę zrobić to dla siebie, jak:

object Instances {
implicit def validationMonad[E] = new Monad[({type L[A] = Validation[E, A]})#L] {
    override def point[A](a: => A) =
        Validation.success(a)
    override def bind[A, B](fa: Validation[E, A])(f: A => Validation[E, B]) =
        fa bind f
}
}

ale dlaczego nieValidation już to masz? po wszystkim,Validation już mabind zdefiniowana metoda.

zresztą nie mogęimport Validation._ iimport Instances._ już razem (to zajęło mi trochę czasu, żeby się dowiedzieć ...), z powodu innegoskomplikowane błąd...
niejednoznaczne wartości ukryte: coś w tym styluvalidationMonad (moja instancja) i metodaValidationInstances1 w cechyValidationInstances2... oba pasują do niektórychFunctor of Validation...

powinienem zmodyfikować źródło skalazu? albo zupełnie czegoś mi brakuje ~?
proszę o pomoc ~

Używam scalaz 7.0.0-M2

questionAnswers(2)

yourAnswerToTheQuestion