29、类型系统中的可见类型应用与高阶类型探索

类型系统中的可见类型应用与高阶类型探索

1. 系统HMV基础概念

在类型检查的过程中,当涉及到 $\Gamma, a \vdash_{hmv} e : \tau$ 前提时,变量 $a$ 和 $b$ 可能会出现在 $\tau$ 中,这些变量被称为Skolem变量。Skolem化操作将 $\upsilon$ 转换为 $\tau$,实际上,在对表达式 $e$ 进行类型检查时,这些变量会形成新的类型常量。当表达式 $e$ 具有类型 $\tau$ 时,由于 $e$ 不能对Skolem变量 $a$、$b$ 做任何假设,所以可以为 $e$ 赋予类型 $\forall a, b. \tau$,这就是所谓的指定泛化。

系统HMV中的子类型关系 $\sigma_1 \leq_{hmv} \sigma_2$ 实现了子类型化。其直观含义是,如果 $\sigma_1 \leq_{hmv} \sigma_2$,那么类型为 $\sigma_1$ 的表达式可以在任何期望类型为 $\sigma_2$ 的地方使用。对于类型方案,$\sigma_1$ 比 $\sigma_2$ 更通用的标准概念就足够了,但对于指定多态类型,需要更加谨慎。

例如,假设表达式 $x @\tau_1 @\tau_2$ 类型检查通过,其中 $x$ 的类型为 $\forall a, b. \upsilon_1$。子类型规则允许将 $x$ 的类型任意更改为 $\upsilon$,只要 $\upsilon \leq_{hmv} \forall a, b. \upsilon_1$。因此,$\upsilon$ 必须具有 $\forall a, b. \upsilon_2$ 的形式,以确保 $x @\tau_1 @\tau_2$ 能继续用 $\tau_1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值