30、类型推断与验证实验及弱穆勒树自动机接受条件研究

类型推断与验证实验及弱穆勒树自动机接受条件研究

类型推断与验证

在类型系统中,类型验证可用于扩展类型推断算法,以处理用户定义的类型规范。为简化讨论,我们主要关注递归函数的构造,因为对于该构造,归纳验证并非简单的推断与比较的组合。

Damas - Milner类型系统中,递归的经典类型规则如下:
[
\frac{H[f \leftarrow \tau] \vdash \lambda x.e \Rightarrow \tau}{H \vdash \mu f.\lambda x.e \Rightarrow \tau}
]
其中,$H$ 是类型环境,$\tau$ 是带变量的单类型。此规则表明 $\tau$ 是与递归定义相关的函数的不动点。在进行类型推断时,需设计算法来计算 $\tau$;若用户提供了 $\tau$ 作为类型声明(规范),则该规则可直接用于类型检查,修改后的规则为:
[
\frac{H[f \leftarrow \tau] \vdash \lambda x.e \Rightarrow \tau}{H \vdash (\mu f.\lambda x.e : \tau) \Rightarrow \tau}
]

然而,在OCAML实现中,ML的类型检查算法并未实际使用该规则。例如:

# let rec (f: ('a -> 'a) -> ('a -> 'b) -> int -> 'a -> 'b) =
function f1 -> function g -> function n -&
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值