[英]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.