【问题标题】:Why scalaz Semigroup is not covariant?为什么scalaz Semigroup不是协变的?
【发布时间】:2014-09-21 19:45:05
【问题描述】:

【问题讨论】:

    标签: scala scalaz scalaz7 semigroup


    【解决方案1】:

    怎么可能?类型参数在半群的主运算append中同时出现在协变和逆变位置(结果和参数),因此它既不能是协变的也不能是逆变的

    举一个简单的反例,考虑Seq[Int]Int 只是为了修复类型,可以是任何东西)。您可以在那里轻松地定义一个半群,append++。 现在 Option 没有扩展 Seq,但是很容易安排一个类似选项的类型来扩展 Seq(甚至只是一个类型 case class Single[A](a: A) extends Seq[A])。但是 Seq[Int] 的半群绝不可能是 Option 的半群[Int] 或 Single[Int],附加两个选项不给出选项,也不附加两个单项。

    【讨论】:

      猜你喜欢
      • 2013-03-15
      • 1970-01-01
      • 2015-09-08
      • 2017-08-03
      • 2017-12-29
      • 2011-10-04
      • 2019-06-07
      相关资源
      最近更新 更多