flatMap与ValidationNel的分离

时间:2016-01-03 21:18:55

标签: scala scalaz

我需要一个组合平面分离(mod_userdir)与\/的分离。

这是我的尝试:

ValidationNel

有更优雅的解决方案吗?

1 个答案:

答案 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有类似的东西。