我需要一个组合平面分离(mod_userdir
)与\/
的分离。
这是我的尝试:
ValidationNel
有更优雅的解决方案吗?
答案 0 :(得分:2)
我只是在这种情况下折叠分离 - 它更简洁,创造更少的中间值:
import scalaz._, Scalaz._
def flatMap[A, B, C](
d: \/[A, B],
f: B => ValidationNel[A, C]
): ValidationNel[A, C] = d.fold(_.failureNel[C], f)
您也可以导入Validation.FlatMap._
,然后使用d.validationNel.flatMap(f)
,但我不会推荐它。我喜欢Cats在其验证类型上有一个andThen
方法的事实,就像flatMap
但没有糖的名字 - 我希望Scalaz有类似的东西。