我正在使用 Scala 研究 FP 概念。我想我终于明白了什么是协变和逆变,以及为什么函数类型的参数类型是逆变的,而它们的返回类型是协变的。但仍有一些我不明白的地方。在 Scala 中, aList[+A]
有一个 prepend( +:
) 方法,它接受S
where S >: A
。如果类型是 an A
,编译器会抛出一个错误:协变参数在逆变位置,我不明白为什么声明 a 的事实在函数定义中使协变List[+A]
。A
据我了解,协变和逆变涉及比 更复杂的类型A
,即单子或函数。
斯卡拉列表:http ://www.scala-lang.org/api/current/index.html#scala.collection.immutable.List