Scalaz嵌套验证:找不到隐式值

Scalaz嵌套验证:找不到隐式值,scala,validation,scalaz,Scala,Validation,Scalaz,在使用Scalaz ValidationNel时,我尝试扁平化以下嵌套验证: import scala.xml.{NodeSeq, Node, Elem} import scalaz._ import Scalaz._ val duration: ValidationNel[String, Int] = // ... val nodes: ValidationNel[String, NodeSeq] = // ... val r: ValidationNel[String, List[MyT

在使用Scalaz ValidationNel时,我尝试扁平化以下嵌套验证:

import scala.xml.{NodeSeq, Node, Elem}
import scalaz._
import Scalaz._

val duration: ValidationNel[String, Int] = // ...
val nodes: ValidationNel[String, NodeSeq] = // ...

val r: ValidationNel[String, List[MyType]] = 
         (duration |@| nodes) { (d, ns) =>
           val n: ValidationNel[String, List[MyType]] = 
                  ns.toList.traverse[({ type l[X] = ValidationNel[String, X] })#l, MyType](extractMyType(_, d))
           n
         }.flatMap(identity)
// ...

private def extractMyType(n: Node, d: Int): ValidationNel[String, MyType] = //...
使用sbt编译时,我得到:

[error] MyClass.scala:xx: could not find implicit value for parameter F0: scalaz.Bind[scalaz.Unapply[scalaz.Apply,scalaz.ValidationNel[String,Int]]{type M[X] = scalaz.ValidationNel[String,X]; type A = Int}#M]
[error]         val r = (duration |@| nodes) { (d, ns) =>
                                             ^
我使用的是scala 2.10.0和scalaz 7.1.1


我做错了什么?

虽然
ValidationNel
不是一元的,您需要
导入scalaz.Validation.FlatMap.\u
以避免
FlatMap
上出现弃用警告,但这也应该是可行的。因此,我决定做
折叠(scalaz.Failure(41;),identity)
这是正确的方法。我没有怀疑这是编译错误的原因。你可以把它贴出来作为答案。