In this PDF 演示文稿 http://research.microsoft.com/en-us/um/people/simonpj/papers/haskell-retrospective/ECOOP-July09.pdf关于 Haskell 类型类,幻灯片 #54 有这个问题:
开放式问题:
在具有泛型的语言中
约束多态性,你需要吗
也有子类型吗?
我的问题是:
泛型和约束多态性如何使子类型变得不必要?
如果泛型和约束多态性使得子类型变得不必要,那么为什么 Scala 有子类型呢?
泛型和约束多态性如何使子类型变得不必要?
目前尚不清楚他们是否这样做。如果你把这张幻灯片放在上下文中,我认为演讲者试图提出的论点是这样的:
在过去,子类型提供了一种重要的多态性。
同样在过去,在另一个国家,类型抽象和类型参数提供了一种重要的多态性。这种在其祖国被称为参数多态性,但在国外它被称为generics.
现代泛型承认约束,有时称为“有界多态性”,它可以实现许多与子类型多态性相同的功能。
子类型带来了很大的负担——特别是,您必须担心协变和逆变。语言最终会带来令人不舒服的限制、重量级符号,有时甚至是彻底的安全违规(例如 Eiffel)。
悬而未决的问题:也许受到限制参数多态性解决了足够多的相同问题,在美好的未来,我们可以完全摆脱子类型多态性,以及子类型何时是协变、逆变和不变的令人讨厌的问题。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)