1

シーケンスとは何かを理解していると思います。なぜそれが動作しないのか疑問に思っていList[ValidationNel]ます。例えば:

sequenceうまく動作しますList[Option]]

scala> val os = List(1.some, 2.some)
os: List[Option[Int]] = List(Some(1), Some(2))

scala> os.sequence
res10: Option[List[Int]] = Some(List(1, 2))

...しかし、動作しませんList[ValidationNel]

scala> val vs: List[ValidationNel[String, Int]] = List(Success(1), Success(2))
vs: List[scalaz.ValidationNel[String,Int]] = List(Success(1), Success(2))

scala> vs.sequence
<console>:15: error: could not find implicit value for parameter ev:scalaz.Leibniz.===[scalaz.ValidationNel[String,Int],G[B]]

...しかし、動作しsequenceU ますList[ValidationNel]

scala> vs.sequenceU
res14: scalaz.Validation[scalaz.NonEmptyList[String],List[Int]] = Success(List(1, 2))

私の質問は次のとおりsequenceですList[ValidationNel]。なぜsequenceUそれで動作しますか?

4

2 に答える 2