通过讨论,我的意思是博客条目、书籍(最好)或类似的东西。
背景
我正在第二次阅读 Martin Odersky、Lex Spoon 和 Bill Venners 的 Scala Programming,我非常惊讶地阅读了有关协变和逆变的文章。
我发布这个问题的原因是——作者从构建类 Queue 开始,并讨论如何、在哪里、可以和不能使用协方差。每一步都是前一步的逻辑结果,但是最后一步是将元素添加到队列(在前面):
(elem : Apple) :: (queue[Orange])
然而,在 Scala 中,它以这种方式工作,结果是 Fruit 类型的队列。
在我看来这是错误的——如果有人想要水果队列,首先应该是这样的队列。即时更改类型对我来说太动态了(即,它就像添加整数和字符串,只是为了获取object
类型)。
由于提到的书是关于 Scala 的,类型的变化只是其中的一部分,我正在寻找更实质性的东西。
问题
因此问题是——关于语言设计,我应该读什么,专注于类型变化?有没有可能是 Benjamin C. Pierce 的“类型和编程语言”(它在我的购买清单上)?