Skip to content

System F

System F · Polymorphic lambda calculus

具有显式类型抽象与类型应用的二阶多态 λ 演算。

形式陈述

System F(多态 lambda 演算)在简单类型 lambda 演算上加入全称类型 α.T、类型抽象 Λα.t 与类型应用 t[A]。核心规则为

Γ,α typet:TΓΛα.t:α.T,Γt:α.TΓt[A]:T[A/α].

类型级 β 归约满足 (Λα.t)[A]t[A/α]。纯 System F 具有保持性、进展性和强归一化;显式带类型标注的类型检查可判定,但一般类型重建或 typability 不可判定。

直觉

程序不仅抽象值参数,还抽象类型本身;调用者显式选择类型实例,而同一项在所有实例上保持统一结构。

例子与边界

多态恒等函数为 Λα.λx:α.x,类型是 α.αα。Church 编码可在 System F 中表示布尔值、自然数、积和部分递归数据。System F 的量词可嵌套在任意位置,比 HM 的秩一 let 多态更强,但这种表达力正使完整推断失去可判定性。加入一般递归后强归一化不再成立。

推论与应用

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。