[英]Why scalaz Semigroup is not covariant?
怎么会这样? 类型参数在semigroup的main操作append
中同时出现在协变和协变位置(结果和自变量),因此它既不能协变也不能协变
仅举一个简单的反例,考虑Seq[Int]
( Int
只是用来修复类型,可以是任何东西)。 您可以轻松地在其中定义一个半群,其append
为++
。 现在Option不扩展Seq,但很容易安排一个类似于选项的类型来扩展Seq(甚至只是类型为case class Single[A](a: A) extends Seq[A]
)。 Seq[Int]
的Seq[Int]
不能是Option [Int]或Single [Int]的半组,附加两个选项不会给出一个选项,也不会附加两个单值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.