Seqなど)は、List[+A]と型名の前に+を付けてcovariant(共変)な型を許すように定義されています。covariantとは、Aのクラスを拡張したクラスBがあれば、List[B]はList[A]として代入できることを意味します。以下のように、クラス階層を定義したときに、List[Cat]をList[Animal]として代入できます。A](Aクラスから派生したクラスのList)を代入できるまた、List[Cat]とList[Dog]を足し合わせて、List[Animal]を作ることもできます。Optionクラスでのcovariantの利用Optionも、covariantを使ってOption[+A]として定義されており、NoneはOption[Nothing]から拡張して定義されています。None}Nothingはあらゆる型の子(subtype)になれるようにScalaで定義されているので、None、すなわちOption[Nothing]は、Option[A]やOption[B]などに代入できます。None[B]などと宣言する必要はなく、Noneとだけコード中に書くだけで済むようになっています。