Scala を使用して FP の概念に飛び込んでいます。共変性と反変性とは何か、関数型が引数の型で反変であり、戻り値の型で共変である理由をようやく理解できたと思います。しかし、まだわからないことがあります。Scala では、 aにはwhereを取るList[+A]
prepend( +:
) メソッドがあります。型が an の場合、コンパイラはエラーをスローします: covariant parameter in contravariant position,関数定義でaを宣言すると共変になる理由がわかりません。私が理解している限り、共分散と反分散は、モナドや関数よりも複雑な型に関連しています。S
S >: A
A
List[+A]
A
A
Scala リスト: http://www.scala-lang.org/api/current/index.html#scala.collection.immutable.List