【发布时间】:2015-06-24 06:23:52
【问题描述】:
我想我明白sequence 是什么。我想知道为什么它不适用于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 可以使用它?
【问题讨论】:
标签: scala scalaz applicative traversable