在 scalaz 中使用 Monoid 运算符:|+|不是 Some[Double] 的成员
Using Monoid operators in scalaz: |+| not a member of Some[Double]
让这个工作缺少什么?
import scalaz._
import Scalaz._
val r = Some(1.0) |+| None
val r1 = None[Double] |+| Some(1.0)
我得到以下信息:
Error:(4, 25) value |+| is not a member of Some[Double] lazy val r =
Some(1.0) |+| None
^
问题是 Monoid
超过 Double
是不合法的,因为在某些情况下,浮点算术近似可能会使结合性规则无效。出于这个原因,scalaz 将该实例排除在主项目之外,并将其包含在 scalaz-outlaws 项目中。
如果您需要 Double
的实例,请包括该库,但请记住这是有原因的并考虑您的用例(例如,如果您正在使用浮点运算处理货币交易,您可能做错事了)。
让这个工作缺少什么?
import scalaz._
import Scalaz._
val r = Some(1.0) |+| None
val r1 = None[Double] |+| Some(1.0)
我得到以下信息:
Error:(4, 25) value |+| is not a member of Some[Double] lazy val r = Some(1.0) |+| None
^
问题是 Monoid
超过 Double
是不合法的,因为在某些情况下,浮点算术近似可能会使结合性规则无效。出于这个原因,scalaz 将该实例排除在主项目之外,并将其包含在 scalaz-outlaws 项目中。
如果您需要 Double
的实例,请包括该库,但请记住这是有原因的并考虑您的用例(例如,如果您正在使用浮点运算处理货币交易,您可能做错事了)。