почему Валидация не является Монадой? (Scalaz7)

пример использования:

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

error: Невозможно отменить вводscalaz.Validation[String,Int] в конструктор типаM[_] который классифицируется по типу классаscalaz.Bind

яguess ошибка вызвана тем, что компилятор не может найтиMonad экземпляр дляValidation[String, Int]

Я могу сделать один для себя, как:

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
}
}

но почему нетValidation уже есть? в конце концов,Validation уже имеетbind метод определен.

более того, я не могу иметьimport Validation._ а такжеimport Instances._ вместе больше (это заняло меня, чтобы выяснить ...), из-за другогоcomplicated error...
неоднозначные неявные значения: что-то вроде обоихvalidationMonad (мой экземпляр) и методValidationInstances1 в чертеValidationInstances2... оба соответствуют некоторымFunctor of Validation...

я должен изменить источник скаляза? или я что-то пропустил ~?
пожалуйста, помогите ~

Я использую скалаз 7.0.0-M2

Ответы на вопрос(2)

Ваш ответ на вопрос