安全类型语言的设计与实现
1. 标签子类型与标签单子
在安全类型语言中,标签的子类型关系 $\Delta\vdash\ell\preceq\ell$ 构成一个格,这使得语言拥有标签单子 $t{\ell}$ 和 $m{\ell}$ 的格结构。由于标签和类型处于同一语法类别,使用类型判断 $\Delta\vdash t :: k$ 来排除像 bool→H 或 bool{bool} 这样的非法类型。
1.1 类型系统防止信息依赖
类型系统通过以下规则防止低级计算依赖高级计算:
- $\Delta; \Gamma \vdash m : t$
- $\Delta\vdash\ell:: L$
- $\Delta; \Gamma \vdash m{\ell} : t{\ell}$
- $\Delta; \Gamma \vdash m_1 : t_1{\ell}$
- $\Delta; \Gamma, x:t_1 \vdash m_2 : t_2$
- $\Delta\vdash\ell\ll t_2$
- $\Delta; \Gamma \vdash \text{bind } x = m_1 \text{ in } m_2 : t_2$
标签单子 $m{\ell}$ 用标签 $\ell$ 标记计算 $m$,限制其与程序其余部分的交互。 bind 操作将 $m_1$ 计算为值 $v{\ell}$,并将 $v$ 替换 $m_2$ 中的 $x$。
1.2 标签保护判断
通过
超级会员免费看
订阅专栏 解锁全文

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



