我正在使用Scala潜入FP概念。我认为我终于明白了协方差和逆变是什么以及为什么函数类型在它们的参数类型中是逆变的,并且在它们的返回类型中是协变的。但仍有一些我不理解的事情。在Scala中,List[+A]
有一个前置(+:
)方法,S
位于S >: A
。如果类型是A
,编译器会抛出错误:逆变位置的协变参数,我不明白为什么声明List[+A]
使函数中的A
协变的事实定义。据我所知,协方差和逆变涉及比A
更复杂的类型,即monad或函数。
Scala列表:http://www.scala-lang.org/api/current/index.html#scala.collection.immutable.List