On understanding types, data abstraction, and polymorphism
ACM Computing Surveys (CSUR) - The MIT Press scientific computation series
A simple technique for handling multiple polymorphism
OOPLSA '86 Conference proceedings on Object-oriented programming systems, languages and applications
The Common Lisp object system: an overview
European conference on object-oriented programming on ECOOP '87
A programmer's guide to object-oriented programming in Common LISP
A programmer's guide to object-oriented programming in Common LISP
Eiffel: the language
Optimizing method search with lookup caches and incremental coloring
OOPSLA '92 conference proceedings on Object-oriented programming systems, languages, and applications
Design patterns: elements of reusable object-oriented software
Design patterns: elements of reusable object-oriented software
The design and evolution of C++
The design and evolution of C++
Covariance and contravariance: conflict without a cause
ACM Transactions on Programming Languages and Systems (TOPLAS)
Minimizing row displacement dispatch tables
Proceedings of the tenth annual conference on Object-oriented programming systems, languages, and applications
A meta-language for typed object-oriented languages
Selected papers of the thirteenth conference on Foundations of software technology and theoretical computer science
Typechecking and modules for multimethods
ACM Transactions on Programming Languages and Systems (TOPLAS)
Theory and Practice of Object Systems - Special issue: type systems
Inside the C++ object model
The Dylan reference manual: the definitive guide to the new object-oriented dynamic language
The Dylan reference manual: the definitive guide to the new object-oriented dynamic language
Object-oriented programming: a unified foundation
Object-oriented programming: a unified foundation
Parasitic methods: an implementation of multi-methods for Java
Proceedings of the 12th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Multiple dispatch as dispatch on Tuples
Proceedings of the 13th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
MultiJava: modular open classes and symmetric multiple dispatch for Java
OOPSLA '00 Proceedings of the 15th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Modern C++ design: generic programming and design patterns applied
Modern C++ design: generic programming and design patterns applied
Featherweight Java: a minimal core calculus for Java and GJ
ACM Transactions on Programming Languages and Systems (TOPLAS)
Types and programming languages
Types and programming languages
A Theory of Objects
Multi-Methods in a Statically-Typed Programming Language
ECOOP '91 Proceedings of the European Conference on Object-Oriented Programming
Compact Dispatch Tables for Dynamically Typed Object Oriented Languages
CC '96 Proceedings of the 6th International Conference on Compiler Construction
Realization of multimethods in single dispatch object oriented languages
ACM SIGPLAN Notices
Software—Practice & Experience - Research Articles
Proceedings of the 2006 ACM symposium on Applied computing
Multi-dispatch in the Java virtual machine: design and implementation
COOTS'01 Proceedings of the 6th conference on USENIX Conference on Object-Oriented Technologies and Systems - Volume 6
GPCE '07 Proceedings of the 6th international conference on Generative programming and component engineering
Featherweight Java with multi-methods
Proceedings of the 5th international symposium on Principles and practice of programming in Java
Translating Double Dispatch into Single Dispatch
Electronic Notes in Theoretical Computer Science (ENTCS)
Reconciling method overloading and dynamically typed scripting languages
Computer Languages, Systems and Structures
Identifying structural similarity of methods using isomorphic graphs
ACM SIGSOFT Software Engineering Notes
A safe implementation of dynamic overloading in java-like languages
FSEN'09 Proceedings of the Third IPM international conference on Fundamentals of Software Engineering
COQ mechanization of featherweight fortress with multiple dispatch and multiple inheritance
CPP'11 Proceedings of the First international conference on Certified Programs and Proofs
On flexible dynamic trait replacement for Java-like languages
Science of Computer Programming
Abstraction over implementation structure with symmetrically encapsulated multimethods
Science of Computer Programming
Hi-index | 0.00 |
We propose FMJ (Featherweight Multi Java), an extension of Featherweight Java with encapsulated multi-methods thus providing dynamic overloading. Multi-methods (collections of overloaded methods associated to the same message, whose selection takes place dynamically instead of statically as in standard overloading) are a useful and flexible mechanism which enhances re-usability and separation of responsibilities. However, many mainstream languages, such as, e.g., Java, do not provide it, resorting to only static overloading. The proposed extension is conservative and type safe: both ''message-not-understood'' and ''message-ambiguous'' are statically ruled out. Possible ambiguities are checked during type checking only on method invocation expressions, without requiring to inspect all the classes of a program. A static annotation with type information guarantees that in a well-typed program no ambiguity can arise at run-time. This annotation mechanism also permits modeling static overloading in a smooth way. Our core language can be used as the formal basis for an actual implementation of dynamic (and static) overloading in Java-like languages.