2014-09-21 69 views

回答

1

這怎麼可能?類型參數出現無論是在協變和在半羣,append的主操作逆變位置(結果和參數),因此它可以是既不協變也不逆變

只給一個簡單的計數器例子,考慮Seq[Int]Int只是修復類型,可以是任何東西)。您可以很容易地在那裏定義一個半羣,append++。 現在Option沒有擴展Seq,但是可以很容易地安排一個可以擴展Seq(或者甚至只是一個類型case class Single[A](a: A) extends Seq[A])的選項類型。但是Seq[Int]的半羣絕不可能是Option [Int]的半羣,或Single [Int],追加兩個選項不會提供選項,也不會追加兩個單曲。