Symmetric Multiple Dispatch for Path Dependent Types
Multiple dispatch is one kind of dynamic dispatch. It selects a method to call at run time based on the run-time types of multiple arguments. Unlike single dispatch, which considers the dynamic type of a single argument, multiple dispatch allows precise control of method dispatch and gives an intuitive solution for the binary method problem. Due to the advantages, several existing object-oriented languages use multiple dispatch. However, guaranteeing unambiguity of method calls is challenging and becomes harder when precedence does not exist among arguments. Previous work suggested static overloading rules to ensure unambiguity and type soundness of method invocations at compile time. In this paper, we present multiDOT, a language with symmetric multiple dispatch and path-dependent types. Path-dependent types make programs scalable but their non-trivial interactions with symmetric multiple dispatch have not been studied. We believe that this work provides a theoretical foundation for extending existing languages like Scala with symmetric multiple dispatch or designing new expressive object-oriented languages.
Wed 17 JulDisplayed time zone: Belfast change
10:30 - 12:10 | |||
10:30 30mResearch paper | Dependent Object Types with Implicit Functions Scala Alex Jeffery University of Sussex | ||
11:00 20mTalk | Symmetric Multiple Dispatch for Path Dependent Types Scala | ||
11:20 20mTalk | A universal encoding for functions in Scala based on structural types Scala Guillaume Martres EPFL, Switzerland | ||
11:40 30mShort-paper | Towards Improved GADT Reasoning in Scala Scala Lionel Parreaux EPFL, Aleksander Boruch-Gruszecki EPFL, Paolo G. Giarrusso TU Delft, The Netherlands |