我对Either
的{{1}},Try
和Validation
感到困惑。他们似乎没有做我需要的事情。我需要的是一个简单的monad scalaz
,其中Result[E, R]
是错误类型,E
是结果类型。
R
不合适,因为它不是monad(但投影是)和无偏。Either
不合适,因为其错误类型为Try
且 a monad Throwable
根本不是monad。你会建议什么?我应该自己写这个Validation
类型吗?
答案 0 :(得分:8)
如果你愿意使用Scalaz(听起来像你),\/
(通常发音为#34; disjunction")正是你正在寻找的 - Either
的monadic,右偏见的版本。
它还包含许多其他很好的内容,您无法在标准库中Either
正确投影(1.right
语法,+++
等组合器,转换器来自Validation
等。)。