我烏德的印象是驗證可以作爲一個Monoid /半羣 我試圖在斯卡拉2.9.2和scalaz 7快照下面的代碼驗證是一個SemiGroup/Monoid:使用| + |不工作
import scalaz._
import Scalaz._
val success1 = 1.success
val success2 = 2.success
val failureA = "A".fail
val failureB = "B".fail
success1 |+| success2
<console>:16: error: diverging implicit expansion for type scalaz.Semigroup[scalaz.Validation[Nothing,Int]]
starting with method validationSemigroup in trait ValidationInstances
success1 |+| success2
^
<console>:16: error: value |+| is not a member of scalaz.Validation[Nothing,Int]
success1 |+| success2
我期待一個Success(3)
然後
failureA |+| failureB
給 res1: scalaz.Validation[java.lang.String,Nothing] = Failure(AB)
預期
和
success1 |+| failureA
與
<console>:16: error: diverging implicit expansion for type scalaz.Semigroup[scalaz.Validation[Nothing,Int]]
starting with method validationSemigroup in trait ValidationInstances
success1 |+| failureA
^
<console>:16: error: value |+| is not a member of scalaz.Validation[Nothing,Int]
success1 |+| failureA
預計爲什麼|+|
上Success
不起作用失敗?它是一個錯誤還是我錯過這裏