Translating Double Dispatch into Single Dispatch
Autor: | Lorenzo Bettini, Sara Capecchi, Betti Venneri |
---|---|
Rok vydání: | 2005 |
Předmět: |
General Computer Science
Computer science Semantics (computer science) Programming language Program transformation computer.software_genre Theoretical Computer Science Program Transformation Time-driven programming Type safety Overhead (computing) Late binding Double Dispatch Multi Methods Multiple dispatch computer Dynamic Overloading Computer Science(all) Double dispatch |
Zdroj: | Electronic Notes in Theoretical Computer Science. 138:59-78 |
ISSN: | 1571-0661 |
DOI: | 10.1016/j.entcs.2005.09.011 |
Popis: | Goals of flexibility and re-usability in typed object-oriented languages suggest the requirement of double dispatch, i.e., the mechanism of dynamically selecting a method not only according to the run-time type of the receiver (single dispatch), but also to the run-time type of the argument. However, many mainstream languages, such as, e.g., C++ and Java, do not provide it, resorting to only single dispatch. In this paper we present a general technique for adding double dispatch as a type-safe language feature, so yielding dynamic overloading and covariant specialization of methods, without extending basic semantics. To this aim we introduce a toy core language, extended to a full form of (non encapsulated) multi methods. Then we define a translation algorithm from multi methods to the core language, that implements double dispatch by using only standard mechanisms of static overloading and single dispatch. As a main feature, our translation preserves type safety, it uses neither RTTI nor type downcasts and does not introduce crucial overhead during method selection. |
Databáze: | OpenAIRE |
Externí odkaz: |