“在纯、总的 System F 中,关系环境 $\eta$ 为每个类型变量 $\alpha$ 指定两个闭类型 $A 1,A 2$ 及其值之间的关系 $R \alpha$。这是一种按类型递归的二…”
形式陈述 ​
System F(二阶多态 λ 演算)扩展简单类型 λ 演算,其类型与项包含
类型抽象规则要求
量化是 impredicative 的:
直觉
简单类型 λ 演算要求每个函数固定在某个具体参数类型上,System F 允许函数再对类型本身抽象。
例子与边界
多态恒等函数
具有类型
边界是把 System F 与 Hindley–Milner 混同。前者允许多态参数在任意位置并要求显式类型抽象,表达力更强;后者主要在 let 绑定处作秩一泛化,因而拥有主类型与可判定推断。
纯 System F 的强正规化还依赖没有一般递归;加入固定点算子后仍可维持进展与保持,却会立即失去“所有良类型项都终止”的结论。
推论与应用
System F 是参数多态的标准核心演算,许多泛型语言的中间表示都可翻译到它或其扩展。关系参数性是关于良类型 System F 项保持任意关系的抽象定理,不反向成为演算语法的前置。存在类型可在 impredicative System F 中通过全称量化编码,并为抽象表示提供隐藏接口;原生 pack/unpack 的规则仍应与该编码区分。
其强正规化连接类型化正规化与二阶直觉主义逻辑;在Curry–Howard 对应下,System F 对应二阶命题逻辑。现代编译器常在更丰富的 System Fω、带类型类或带显式强制的核心语言上工作。
参考资料
- Benjamin C. Pierce, Types and Programming Languages, MIT Press, 2002,Chs. 23–24, System F syntax, typing, and metatheory。
- Robert Harper, Practical Foundations for Programming Languages, 2nd ed., Cambridge University Press, 2016,Chs. 10–11, polymorphic type abstraction。