Affiliation:
1. KAIST, South Korea / Oracle Labs, USA
2. KAIST, South Korea
3. Oracle Labs, USA
Abstract
Many object-oriented languages provide method overloading, which allows multiple method declarations with the same name. For a given method invocation, in order to choose what method declaration to invoke, multiple dispatch considers the run-time types of the arguments. While multiple dispatch can support binary methods (such as mathematical operators) intuitively and consistently, it is difficult to guarantee that calls will be neither ambiguous nor undefined at run time, especially in the presence of expressive language features such as multiple inheritance and parametric polymorphism. Previous efforts have formalized languages that include such features by using overloading rules that guarantee a unique and type-sound resolution of each overloaded method call; in many cases, such rules resolve ambiguity by treating the arguments asymmetrically. Here we present the first formal specification of a strongly typed object-oriented language with symmetric multiple dispatch, multiple inheritance, and parametric polymorphism with variance. We define both a static (type- checking) semantics and a dynamic (dispatching) semantics and prove the type soundness of the language, thus demonstrating that our novel dynamic dispatch algorithm is consistent with the static semantics. Details of our dynamic dispatch algorithm address certain technical challenges that arise from structural asymmetries inherent in object-oriented languages (e.g., classes typically declare ancestors explicitly but not descendants).
Funder
National Research Foundation of Korea
Publisher
Association for Computing Machinery (ACM)
Subject
Safety, Risk, Reliability and Quality,Software
Reference31 articles.
1. Eric Allen David Chase J. J. Hallett Victor Luchangco Jan-Willem Maessen Sukyoung Ryu Guy L. Steele Jr. and Sam Tobin-Hochstadt. 2008. The Fortress Language Specification Version 1.0. Eric Allen David Chase J. J. Hallett Victor Luchangco Jan-Willem Maessen Sukyoung Ryu Guy L. Steele Jr. and Sam Tobin-Hochstadt. 2008. The Fortress Language Specification Version 1.0.
2. Modular multiple dispatch with multiple inheritance
3. Type checking modular multiple dispatch with parametric polymorphism and multiple inheritance
4. Julia: A Fresh Approach to Numerical Computing
Cited by
4 articles.
订阅此论文施引文献
订阅此论文施引文献,注册后可以免费订阅5篇论文的施引文献,订阅后可以查看论文全部施引文献
1. Formalizing ϕ-Calculus: A Purely Object-Oriented Calculus of Decorated Objects;Proceedings of the 24th ACM International Workshop on Formal Techniques for Java-like Programs;2022-06-07
2. Taming the Merge Operator;Journal of Functional Programming;2021
3. Polymorphic symmetric multiple dispatch with variance;Proceedings of the ACM on Programming Languages;2019-01-02
4. Decidable tag-based semantic subtyping for nominal types, tuples, and unions;Proceedings of the 21st Workshop on Formal Techniques for Java-like Programs - FTfJP '19;2019