Scala中的任何一种,尝试和验证

时间:2014-03-13 12:24:34

标签: scala error-handling monads scalaz

我对Either的{​​{1}},TryValidation感到困惑。他们似乎没有做我需要的事情。我需要的是一个简单的monad scalaz,其中Result[E, R]是错误类型,E是结果类型。

  • R不合适,因为它不是monad(但投影是)和无偏
  • Either不合适,因为其错误类型为Try a monad
  • Throwable根本不是monad。

你会建议什么?我应该自己写这个Validation类型吗?

1 个答案:

答案 0 :(得分:8)

如果你愿意使用Scalaz(听起来像你),\/(通常发音为#34; disjunction")正是你正在寻找的 - Either的monadic,右偏见的版本。

它还包含许多其他很好的内容,您无法在标准库中Either正确投影(1.right语法,+++等组合器,转换器来自Validation等。)。