从线性逻辑视角看按推值调用
1 列表与正类型的定义
在类型定义方面,对于正类型 ϕ 的元素列表类型,存在多种定义方式。
- 普通列表类型 :最简单的定义是 λ0 = 1 ⊕(ϕ ⊗λ0),这对应于普通的 ML 列表类型。
- 惰性列表类型 :定义 λ1 = 1 ⊕(ϕ ⊗!λ1),可得到惰性列表(或可终止流)类型,该类型列表的尾部仅在需要时才会计算。
- 通用对象列表类型 :考虑 λ2 = 1⊕(!σ ⊗λ2),能操作类型为 σ(可以是通用类型)的对象列表,且无需访问其元素。
2 线性逻辑模型
线性逻辑模型由以下数据构成:
| 组成部分 | 详细描述 |
| ---- | ---- |
| 范畴 L | 作为基础的范畴结构 |
| 对称幺半结构 | 包括 ⊗(从 L² 到 L 的函子)、1(L 的对象)、λX、ρX、αX,Y,Z 和 σX,Y(自然同构),使用 X ⊸Y 表示从 X 到 Y 的线性态射对象,ev 为求值态射,cur 为线性柯里化映射 |
| 对象 ⊥ | 使得自然态射 ηX = cur(ev σX⊸⊥,X) 对于每个对象 X 都是同构,L 是 ∗ - 自治范畴,用 X⊥ 表示 X ⊸⊥ |
| 笛卡尔结构 | L 是笛卡尔范畴,⊤ 为终对象,& 为笛卡尔积,pri 为投影,由 ∗ - 自治性可知 L 有所有有限余积,0 为初始对象,⊕ 为余积,ini 为注入 |
| 余单子! | 从 L 到 L 的余单子,有余单位 derX(称为脱逸)和余乘
从线性逻辑视角看按推值调用
超级会员免费看
订阅专栏 解锁全文

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



