MultiJava: modular open classes and symmetric multiple dispatch for Java

@inproceedings{Clifton2000MultiJavaMO,
  title={MultiJava: modular open classes and symmetric multiple dispatch for Java},
  author={Curtis Clifton and G. Leavens and C. Chambers and T. Millstein},
  booktitle={OOPSLA '00},
  year={2000}
}
We present MultiJava, a backward-compatible extension to Java supporting open classes and symmetric multiple dispatch. Open classes allow one to add to the set of methods that an existing class supports without creating distinct subclasses or editing existing code. Unlike the "Visitor" design pattern, open classes do not require advance planning, and open classes preserve the ability to add new subclasses modularly and safely. Multiple dispatch offers several well-known advantages over the… Expand
MultiJava: Design rationale, compiler implementation, and applications
TLDR
The design of MultiJava is illustrated and motivates and its modular static typechecking and modular compilation strategies are described, allowing users to express desired programming idioms in a way that is declarative and supports static type checking, in contrast to the tedious and type-unsafe workarounds required in Java. Expand
Open multi-methods for c++
TLDR
This work presents the rationale, design, implementation, and performance of a language feature, called open multi-methods, for C++, and describes a model implementation that is simpler to use, catches more user mistakes, and resolves more ambiguities through link-time analysis. Expand
Relaxed MultiJava: balancing extensibility and modular typechecking
TLDR
Relaxed MultiJava is presented, a backward-compatible extension of Java that allows programmers to add new methods to existing classes and to write multimethods and its compiler and custom loader cooperate to keep load-time checking costs low. Expand
Half & Half: Multiple Dispatch and Retroactive Abstraction for Java TM†
TLDR
A type-safe solution that combines the two mechanisms that facilitate extending existing type hierarchies by limiting multimethod type checks to package boundaries and by compiling certain packages withMultimethods into sealed Jar files is presented. Expand
Design and evaluation of C++ open multi-methods
TLDR
This work presents the rationale, design, implementation, performance, programming guidelines, and experiences of working with a language feature, called open multi-methods, for C++, and describes a model implementation that is simpler to use, catches more user mistakes, and resolves more ambiguities through link-time analysis. Expand
Coq Mechanization of Featherweight Fortress with Multiple Dispatch and Multiple Inheritance
TLDR
A core calculus for the Fortress programming language is presented, which provides both multiple dispatch and multiple inheritance and is formally defined and mechanize the calculus and its type safety proof in Coq. Expand
Modularly Typesafe Interface Dispatch in JPred
Multiple dispatch generalizes the receiver-oriented dyna mic dispatch of traditional object-oriented (OO) languages by all owing the run-time classes of all arguments to be employed. While rese archExpand
Multi-Dispatch in the Java Virtual Machine: Design and Implementation
TLDR
The general-purpose technique provides smaller dispatch latency than programmer-written double-dispatch code with equivalent functionality and isolates the performance penalty and semantic changes of multimethod dispatch to the program sections which use it. Expand
External Dispatch: Yet Another Object-Oriented Single and Multiple Dispatch Mechanism
TLDR
A new objectoriented external dispatch mechanism is introduced, which complements the traditional object-oriented internal single dispatch mechanism, and is applicable not only to multiple dispatch, but can also be used as an alternative to decorators and some creational design patterns. Expand
EVL: A framework for multi-methods in C++
TLDR
The EVL (Extended Virtual function Library) framework is presented which provides a set of classes in C++ aiming at solving the problem of multi-methods and provides both symmetric and asymmetric dispatch algorithms that can be refined by the programmer to include criteria other than class inheritance. Expand
...
1
2
3
4
5
...

References

SHOWING 1-10 OF 64 REFERENCES
Modular Statically Typed Multimethods
TLDR
This work describes Dubious, a simple core language including first-class generic functions with symmetric multimethods, a classless object model, and modules that can be separately typechecked, and identifies two sets of restrictions that ensure modular type safety for Dubious. Expand
Object-Oriented Multi-Methods in Cecil
TLDR
This work proposes an alternative view of multiple dispatching that is intended to promote a data-abstraction-oriented programming style, and explores this object-oriented view of multi-methods in the context of a new programming language named Cecil. Expand
Typechecking and modules for multi-methods
TLDR
A polynomial-time static typechecking algorithm that checks the conformance, completeness, and consistency of a group of method implementations with respect to declared message signatures and a module system that enables independently-developed code to be fully encapsulated and statically typechecked on a per-module basis. Expand
Type checking higher-order polymorphic multi-methods
We present a new predicative and decidable type system, called ML¿, suitable for languages that integrate functional programming and parametric polymorphism in the tradition of ML [21, 28], andExpand
Parasitic methods: an implementation of multi-methods for Java
TLDR
This paper defines a simple extension to Java that enables the writing of "encapsulated" multi-methods through the use of parasitic methods, methods that "attach" themselves to other methods, and yields for free both covariant and contravariant specialization of methods. Expand
Typechecking and Modules for Multimethods
TLDR
A polynomial-time, static typechecking algorithm that checks the conformance, completeness, and consistency of a group of method implementations with respect to declared message signatures and a module system that enables independently developed code to be fully encapsulated and statically typechecked on a per-module basis. Expand
Multiple dispatch as dispatch on Tuples
TLDR
A new, simple, and orthogonal way to add multimethods to single-dispatch object-oriented languages, without affecting existing code is described. Expand
Efficient multiple and predicated dispatching
TLDR
An algorithm for constructing efficient dispatch functions that combines novel algorithms for efficient single dispatching, multiple dispatches, and predicate dispatching is developed, showing improvements of up to 30% over already heavily optimized baseline versions. Expand
The Dylan Reference Manual: The Definitive Guide to the New Object-Oriented Dynamic Language
TLDR
The Dylan Reference Manual is the first complete reference to present all aspects of this unique language and provides conceptual chapters describing the overall structure and semantics of the language and gives the definition of every class, function, and syntactic construct of thelanguage in detail. Expand
Static type checking of multi-methods
TLDR
It is shown how multi-methods can be statically type checked and how information collected at the time of program compilation can be used to make the run-time dispatch of multi- methods more efficient. Expand
...
1
2
3
4
5
...