嵌入式 DSL 的类型错误诊断
1. 背景与基础规则
在嵌入式领域特定语言(DSL)的开发中,类型错误诊断是一项重要的任务。首先,我们来看简单类型 λ - 演算带 let 表达式的约束生成规则,这些规则在图 2 中给出:
- 变量规则 :
- 若 (v : \forall a.Q \Rightarrow \tau \in \Gamma),(\alpha) 是新变量,则 (\Gamma \vdash v : [a \mapsto \alpha]\tau),且约束为 ([a \mapsto \alpha]Q)。
- 抽象规则 :
- 若 (\Gamma, x : \alpha \vdash e : \tau),约束为 (C),(\alpha) 是新变量,则 (\Gamma \vdash \lambda x.e : \alpha \to \tau),约束为 (C)。
- 应用规则 :
- 若 (\Gamma \vdash e_1 : \tau_1),约束为 (C_1),(\Gamma \vdash e_2 : \tau_2),约束为 (C_2),(\alpha) 是新变量,则 (\Gamma \vdash e_1 e_2 : \alpha),约束为 (C_1 \land C_2 \land \tau_1 \sim \tau_2 \to \alpha)。
- let 规则 :
- 若 (\Gamma \vdash e_1 : \tau_1)
超级会员免费看
订阅专栏 解锁全文
2087

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



