Skip to main content
QUICK REVIEW

[论文解读] Implicit Polarized F: local type inference for impredicativity

Henry Mercer, Cameron Ramsay|arXiv (Cornell University)|Mar 3, 2022
Logic, programming, and type systems被引用 4
一句话总结

本文提出了一种名为隐式极化F(Implicit Polarized F)的新式类型推断系统,用于System F中的非预判多态性。该系统利用调用-按值-按-推导(call-by-push-value)对偶性,实现无需合一的局部类型推断。通过显式极性转换重述System F,该方法实现了可判定的、声明式的类型推断,自然解释了现有启发式方法的来源,并以极低的复杂度支持完整的非预判性。

ABSTRACT

System F, the polymorphic lambda calculus, features the principle of impredicativity: polymorphic types may be (explicitly) instantiated at other types, enabling many powerful idioms such as Church encoding and data abstraction. Unfortunately, type applications need to be implicit for a language to be human-usable, and the problem of inferring all type applications in System F is undecidable. As a result, language designers have historically avoided impredicative type inference. We reformulate System F in terms of call-by-push-value, and study type inference for it. Surprisingly, this new perspective yields a novel type inference algorithm which is extremely simple to implement (not even requiring unification), infers many types, and has a simple declarative specification. Furthermore, our approach offers type theoretic explanations of how many of the heuristics used in existing algorithms for impredicative polymorphism arise.

研究动机与目标

  • 为解决System F中完整类型推断的不可判定性问题,即在非预判实例化时需要显式类型应用。
  • 设计一种实用且人类可读的类型推断系统,支持完整的非预判多态性,而无需显式类型注解。
  • 提供一种清晰、声明式的类型推断规范,解释现有系统中启发式技术的起源。
  • 证明调用-按值-按-推导中的极性转换自然捕捉了参数列表的结构,并支持局部推断。
  • 表明只要恰当地控制极性边界,函数类型中的反变性无需为可判定性而放弃。

提出的方法

  • 通过调用-按值-按-推导对偶性重述System F,引入显式转换以标记极性边界。
  • 提出一种局部类型推断算法,通过分析转换和极性变化的结构来推断类型应用。
  • 使用尊重全局限量类型特殊化顺序的声明式子类型关系,其∀L和∀R规则反映了实例化的语义。
  • 采用双向类型检查风格,将合成与检查判断分离,但类型可在无合一的情况下局部推断。
  • 通过转换的存在表示类型实例化,从而限制非预判实例化的发生位置。
  • 提供一种非算法化的推断规范,解释为何某些启发式方法(如在首次遇到的约束处实例化量词)自然源于类型论结构。

实验结果

研究问题

  • RQ1如何在不牺牲完整多态性的前提下,使非预判类型推断可判定且实用?
  • RQ2为何现有非预判推断的启发式方法(如在首次约束处实例化)有效,其理论基础是什么?
  • RQ3非预判函数中参数列表的结构能否获得一种原则性的类型论解释?
  • RQ4为实现可判定性,是否必须放弃函数类型的反变性,还是可以保留?
  • RQ5能否给出一种声明式类型推断规范,以解释复杂推断算法的行为?

主要发现

  • 所提出的系统在无需合一的情况下实现了完整的非预判多态性,且其类型推断算法极其简单,易于实现。
  • 该算法具有声明式规范,在标准不可判定规范能够成功的所有情况下,均能正确推断类型。
  • 语法中显式转换的存在自然解释了为何参数列表对推断至关重要,因为它们标记了极性边界。
  • 该方法阐明了先前系统中限制函数类型反变性的原因并非来自反变性本身,而是由于极性边界的无控制穿越。
  • 启发式策略(如在首次遇到的约束处实例化量词)被证明源于转换与极性的类型论结构。
  • 该系统为boxy类型和HMF的行为提供了原则性解释,表明其设计选择自然源自极化类型理论。

更好的研究,从现在开始

从阅读论文到最终审阅,大幅缩短您的研究时间。

无需绑定信用卡

本解读由 AI 生成,并经人工编辑审核。