В Scala 2.12 должно работать следующее:
import cats.data.ValidatedNel, cats.syntax.validated._
// Your code:
sealed trait DomainValidation {
def errorMessage: String
}
type ValidationResult[A] = ValidatedNel[DomainValidation, A]
val ai:ValidationResult[String] = "big".validNel
val bi:ValidationResult[String] = "leboski".validNel
val l = List(ai,bi)
А потом:
scala> import cats.instances.list._, cats.syntax.traverse._
import cats.instances.list._
import cats.syntax.traverse._
scala> l.sequence
res0: ValidationResult[List[String]] = Valid(List(big, leboski))
Вы не показываете свой код и не объясняете, что не работает, поэтому трудно диагностировать вашу проблему, но это может быть одной из следующих проблем:
- Вы находитесь на Scala 2.11, где
.sequence
требует, чтобы вы включили -Ypartial-unification
в настройках вашего компилятора. Если вы используете sbt, вы можете сделать это, добавив scalacOptions += "-Ypartial-unification"
к вашему build.sbt
(при условии, что вы на 2.11.9 +).
- Вы пропустили один из необходимых импортов. Вам нужен как минимум экземпляр
Traverse
для List
и синтаксис для Traverse
. Приведенный выше пример кода включает два необходимых вам импорта, или вы можете просто импортировать cats.implicits._
и немного упростить свою жизнь.
Если это не одна из этих двух вещей, вам, вероятно, потребуется включить более подробную информацию в свой вопрос, чтобы мы могли помочь.