28、可见类型应用:原理、挑战与解决方案

可见类型应用:原理、挑战与解决方案

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
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值