A semantics of multiple inheritance.
Proc. of the international symposium on Semantics of data types
Building an object-oriented database system: the story of 02
Building an object-oriented database system: the story of 02
A calculus for overloaded functions with subtyping
Information and Computation
A meta-language for typed object-oriented languages
Selected papers of the thirteenth conference on Foundations of software technology and theoretical computer science
Sound polymorphic type inference for objects
Proceedings of the tenth annual conference on Object-oriented programming systems, languages, and applications
Simple objects for Standard ML
PLDI '96 Proceedings of the ACM SIGPLAN 1996 conference on Programming language design and implementation
Adding type parameterization to the Java language
Proceedings of the 12th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
A middle-out concept of hierarchy (or the problem of feeding the animals)
ACM SIGSOFT Software Engineering Notes
A lambda calculus of objects with self-inflicted extension
Proceedings of the 13th 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
Correspondence polymorphism for object-oriented languages
Proceedings of the 14th 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
Research Frontiers in Object Technology
Information Systems Frontiers
An Operational Approach to the Semantics of Classes: Application to Type Checking
Programming and Computing Software
Consistency of the static and dynamic components of object-oriented specifications
Data & Knowledge Engineering
Type-safe convariant specialization with generalized matching
Information and Computation - FOOL VII
Thémis: a database programming language handling integrity constraints
The VLDB Journal — The International Journal on Very Large Data Bases - Persistent object systems
Flexible Object-Oriented Views Using Method Propagation
OOIS '02 Proceedings of the 8th International Conference on Object-Oriented. Information Systems
Characterizing Web Service Substitutivity with Combined Deductive and Inductive Engines
ADVIS '02 Proceedings of the Second International Conference on Advances in Information Systems
Modular Statically Typed Multimethods
ECOOP '99 Proceedings of the 13th European Conference on Object-Oriented Programming
Bounded Polymorphism for Extensible Objects
TYPES '98 Selected papers from the International Workshop on Types for Proofs and Programs
Inheriting and Modifying Behavior
TOOLS '97 Proceedings of the Tools-23: Technology of Object-Oriented Languages and Systems
Behavioral Subtyping and Behavioral Enrichment of Multimethods
TOOLS '00 Proceedings of the Technology of Object-Oriented Languages and Systems (TOOLS 34'00)
A Semantics of the Separation of Interface and Implementation in C++
COMPSAC '96 Proceedings of the 20th Conference on Computer Software and Applications
Relaxed MultiJava: balancing extensibility and modular typechecking
OOPSLA '03 Proceedings of the 18th annual ACM SIGPLAN conference on Object-oriented programing, systems, languages, and applications
The power of symmetry: unifying inheritance and generative programming
OOPSLA '03 Companion of the 18th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Single Assignment C: efficient support for high-level array operations in a functional setting
Journal of Functional Programming
Proceedings of the 2004 ACM symposium on Applied computing
CLAIRE: combining sets, search and rules to better express algorithms
Theory and Practice of Logic Programming
Region inference for an object-oriented language
Proceedings of the ACM SIGPLAN 2004 conference on Programming language design and implementation
OOPSLA '04 Proceedings of the 19th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Traits: A mechanism for fine-grained reuse
ACM Transactions on Programming Languages and Systems (TOPLAS)
Software—Practice & Experience - Research Articles
MultiJava: Design rationale, compiler implementation, and applications
ACM Transactions on Programming Languages and Systems (TOPLAS)
Modular multiple dispatch with multiple inheritance
Proceedings of the 2007 ACM symposium on Applied computing
Mechanisms for improved covariant type-checking
Computer Languages, Systems and Structures
Featherweight Java with multi-methods
Proceedings of the 5th international symposium on Principles and practice of programming in Java
Patterns, symmetry, and symmetry breaking
Communications of the ACM - Urban sensing: out of the woods
The Challenges of Service Evolution
CAiSE '08 Proceedings of the 20th international conference on Advanced Information Systems Engineering
Expressive and modular predicate dispatch for Java
ACM Transactions on Programming Languages and Systems (TOPLAS)
Featherweight Java with dynamic and static overloading
Science of Computer Programming
Symmetric encapsulated multi-methods to abstract over application structure
Proceedings of the 2009 ACM symposium on Applied Computing
An Interval-Based Inference of Variant Parametric Types
ESOP '09 Proceedings of the 18th European Symposium on Programming Languages and Systems: Held as Part of the Joint European Conferences on Theory and Practice of Software, ETAPS 2009
Translating Double Dispatch into Single Dispatch
Electronic Notes in Theoretical Computer Science (ENTCS)
Customizable and upgradable enterprise systems without the crystal ball assumption
EDOC'09 Proceedings of the 13th IEEE international conference on Enterprise Distributed Object Computing
Computer Languages, Systems and Structures
Basic operations over models containing subset and union properties
MoDELS'06 Proceedings of the 9th international conference on Model Driven Engineering Languages and Systems
Embedded Systems Design
Efficient multimethods in a single dispatch language
ECOOP'05 Proceedings of the 19th European conference on Object-Oriented Programming
Semantic hierarchy refactoring by abstract interpretation
VMCAI'06 Proceedings of the 7th international conference on Verification, Model Checking, and Abstract Interpretation
Actor-oriented design of scientific workflows
ER'05 Proceedings of the 24th international conference on Conceptual Modeling
A proposal for records in event-b
FM'06 Proceedings of the 14th international conference on Formal Methods
Behavioral interface specification languages
ACM Computing Surveys (CSUR)
Software modeling language with frames and multi-abstractions: an overview
ICAISC'12 Proceedings of the 11th international conference on Artificial Intelligence and Soft Computing - Volume Part II
Piecewise modelling with state subtypes
MODELS'07 Proceedings of the 10th international conference on Model Driven Engineering Languages and Systems
Abstraction over implementation structure with symmetrically encapsulated multimethods
Science of Computer Programming
APCCM '13 Proceedings of the Ninth Asia-Pacific Conference on Conceptual Modelling - Volume 143
The Substitution Principle in an Object-Oriented Framework for Web Services: From Failure to Success
Proceedings of International Conference on Information Integration and Web-based Applications & Services
Hi-index | 0.00 |
In type-theoretic research on object-oriented programming, the issue of “covariance versus contravariance” is a topic of continuing debate. In this short note we argue that covariance and contravariance appropriately characterize two distinct and independent mechanisms. The so-called contravariance rule correctly captures the subtyping relation (that relation which establishes which sets of functions can replace another given set in every context). A covariant relation, instead, characterizes the specialization of code (i.e., the definition of new code which replaces old definitions in some particular cases). Therefore, covariance and contravariance are not opposing views, but distinct concepts that each have their place in object-oriented systems. Both can (and should) be integrated in a type-safe manner in object-oriented languages. We also show that the independence of the two mechanisms is not characteristic of a particular model but is valid in general, since covariant specialization is present in record-based models, although it is hidden by a deficiency of all existing calculi that realize this model. As an aside, we show that the &lgr;&-calculus can be taken as the basic calculus for both an overloading-based and a record-based model. Using this approach, one not only obtains a more uniform vision of object-oriented type theories, but in the case of the record-based approach, one also gains multiple dispatching, a feature that existing record-based models do not capture