给定以下函数:
def foo( a: A ): ValidationNEL[String,Seq[B]] = ...
def bar( b: B ): ValidationNEL[String,C] = ...
我希望将它们组合起来构建一个函数,该函数调用foo
,然后在生成的Seq
中对每个元素最终调用bar
,以获得ValidationNEL[String,Seq[C]]
:
def fooAndBar( a: A ): ValidationNEL[String,Seq[C]]
Scalaz 7 的文档非常简短,我找不到任何相关的示例。
flatMap
似乎不是Validation
的成员。但是有一个bind
方法。是否需要进行某些隐式转换? - paradigmaticscalaz.syntax.traverse._
并且只需写foo(a).flatMap(_.traverse[ValNEL, C](bar))
。 - Travis Brownfoo(a) flatMap (Traverse[List].traverse[ValNEL, B, C](_)(bar))
也是可能的。 - ron