【发布时间】:2016-11-19 16:01:22
【问题描述】:
【问题讨论】:
-
我认为 Haskell 没有传统定义的子类型,因为每个值都只有 one 类型。类型类只是扩展类型语言以允许用户定义的多态性的一种方式。也就是说,它让值
x具有C a => a类型,其中C是a必须遵守的一组规则;但x仍然只有一种类型。将此与 OOPy 子类型进行对比,其中值x具有多种类型:它的基本类型,以及从基本类型继承的任何类型。 -
另一个更迂腐的论点:子类型会抑制 Haskell 编译器具有的 DHM 风格的主体类型类型推断,而类型类则没有。
-
详细说明@haoformayor 的观点:不要混淆子类型和临时多态性。子类型是一种特殊的多态性,而类型类则完全不同。
标签: haskell type-theory subtyping