一句话:提出 Call-by-Unboxed-Value,以原子/复合与装箱/未装箱两轴统一求值序与表示多态,支持未装箱值与多态混用并指导表示无关编译。
Call-By-Push-Value 通过值/计算区分统一了传名与传值。本文引入 Call-By-Unboxed-Value,在值/计算之外进一步沿“原子/复合”正交轴分解程序,从而显式表达值的装箱与未装箱表示,使函数可直接传递未装箱输入输出。该演算允许多态与未装箱类型不受限混合,为基于表示无关性的多态编译技术提供基础。作者用其独立于类型形式化表示多态,首次编译无类型表示多态代码,同时在到机器的整个过程中保持类型信息。
Call-By-Push-Value has famously subsumed both call-by-name and call-by-value by decomposing programs along the axis of “values” versus “computations.” Here, we introduce Call-By-Unboxed-Value which further decomposes programs along an orthogonal axis separating “atomic” versus “complex.” As the name suggests, these two dimensions make it possible to express the representations of values as boxed or unboxed, so that functions pass unboxed values as inputs and outputs. More importantly, Call-By-Unboxed-Value allows for an unrestricted mixture of polymorphism and unboxed types, giving a foundation for studying compilation techniques for polymorphism based on representation irrelevance . In this regard, we use Call-By-UnboxedValue to formalize representation polymorphism independently of types; for the first time compiling untyped representation-polymorphic code, while nonetheless preserving types all the way to the machine.