7、Haskell与ML的微妙关系:从类型翻译到抽象机实现

Haskell与ML的微妙关系:从类型翻译到抽象机实现

1. SL/LL到IL的类型与术语翻译

1.1 类型翻译

为了模拟值和表达式上下文的区别,使用三种不同的类型翻译:$D_b \langle t \rangle$、$D_v \langle t \rangle$ 和 $D_k \langle t \rangle$。
- $D_v \langle t \rangle$:堆上值的类型(以及变量绑定的类型)。
- $D_k \langle t \rangle$:接收类型为 $t$ 的表达式求值结果的延续类型。
- $D_b \langle t \rangle$:“裸”类型,尚未通过适当的否定转换为值或延续类型。

SL和LL仅支持匿名和积类型,没有声明新数据类型的规定。LL的类型系统不足以表示许多Haskell数据类型,例如Haskell的 Bool 类型与IL的 $(1 \vee 1)$ 同构,而LL的等价类型 $1 \oplus 1$ 映射到IL类型 $(\neg\neg 1 \vee \neg\neg 1)$。

函数的表示很有趣,逻辑蕴含 $P \Rightarrow Q$ 经典等价于 $\neg P \vee Q$,但在直觉主义演算中不能作为函数类型。类型 $\neg(P \& \neg Q)$ 经典等价于蕴含,其操作解释是函数是一个接收两个值(类型为 $P$ 的参数和类型为 $\neg Q$ 的结果发送位置)的延续,这与实际抽象机中的函数调用工作方式一致。

1.2 术语翻译

SL/LL术语到IL术语的翻译如下表所示:
| SL/LL

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值