可见类型应用:原理、挑战与解决方案
1. 类型系统概述
1.1 系统 V(System V)
系统 V 是 HMV 的一种语法导向版本,它直接对应一种名为 V 的类型推断算法。尽管算法 V 的工作方式与算法 W 不同,但它仍具备计算主类型的能力。其关键在于可以将类型变量的实例化延迟到必要时进行。系统 V 相对于 HMV 是可靠且完备的,算法 V 相对于系统 V 也是可靠且完备的,这些结果体现了 HMV 的主类型属性。
1.2 系统 SB(System SB)
系统 SB 是一个具有高阶类型的语法导向双向类型系统。在为 GHC 添加可见类型应用时,需要考虑系统 V 与 GHC 中众多类型系统扩展的交互。大多数交互是正交的,但 GHC 对高阶类型的扩展使其类型推断算法变为双向的。系统 SB 表明设计系统 V 的方法可以直接扩展到双向系统,它有两个作用:展示可见类型应用的方法与类型系统扩展的良好结合,以及作为在 GHC 中实现的基础。
1.3 系统 B(System B)
系统 B 是系统 SB 的一种新颖、简单的声明式规范。证明了系统 SB 相对于系统 B 是可靠且完备的。此前的工作中没有类似的声明式规范,本文表明即使在高阶系统中,也可以采用 HM 风格的表示。
2. 为什么需要可见类型应用
2.1 解决类型类歧义
假设程序员希望通过解析器和格式化输出器来规范化表达式文本的表示。例如:
normalize :: String -> String
normal
超级会员免费看
订阅专栏 解锁全文
168万+

被折叠的 条评论
为什么被折叠?



