On understanding types, data abstraction, and polymorphism
ACM Computing Surveys (CSUR) - The MIT Press scientific computation series
The Common Lisp object system: an overview
European conference on object-oriented programming on ECOOP '87
A semantics of multiple inheritance
Information and Computation - Semantics of Data Types
A programmer's guide to object-oriented programming in Common LISP
A programmer's guide to object-oriented programming in Common LISP
How to make ad-hoc polymorphism less ad hoc
POPL '89 Proceedings of the 16th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Type inference for record concatenatiOn and multiple inheritance
Proceedings of the Fourth Annual Symposium on Logic in computer science
A modest model of records, inheritance, and unbounded quantification
Information and Computation - Selections from 1988 IEEE symposium on logic in computer science
LFP '90 Proceedings of the 1990 ACM conference on LISP and functional programming
Toward a typed foundation for method specialization and inheritance
POPL '90 Proceedings of the 17th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
POPL '90 Proceedings of the 17th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A static type system for message passing
OOPSLA '91 Conference proceedings on Object-oriented programming systems, languages, and applications
Categories, types, and structures: an introduction to category theory for the working computer scientist
A type-inference approach to reduction properties and semantics of polymorphic expressions (summary)
LFP '86 Proceedings of the 1986 ACM conference on LISP and functional programming
Typechecking and modules for multi-methods
OOPSLA '94 Proceedings of the ninth annual conference on Object-oriented programming systems, language, and applications
Typechecking and modules for multimethods
ACM Transactions on Programming Languages and Systems (TOPLAS)
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
An Operational Approach to the Semantics of Classes: Application to Type Checking
Programming and Computing Software
Modular Statically Typed Multimethods
ECOOP '99 Proceedings of the 13th European Conference on Object-Oriented Programming
Proceedings of the 22nd annual ACM SIGPLAN conference on Object-oriented programming systems and applications
Advanced service trading for scientific computing over the grid
The Journal of Supercomputing
Semantic-based service trading: application to linear algebra
VECPAR'06 Proceedings of the 7th international conference on High performance computing for computational science
Intelligent service trading and brokering for distributed network services in GridSolve
VECPAR'10 Proceedings of the 9th international conference on High performance computing for computational science
Prototypes with multiple dispatch: an expressive and dynamic object model
ECOOP'05 Proceedings of the 19th European conference on Object-Oriented Programming
COQ mechanization of featherweight fortress with multiple dispatch and multiple inheritance
CPP'11 Proceedings of the First international conference on Certified Programs and Proofs
Parametric And Type-Dependent Polymorphism
Fundamenta Informaticae
Matching objects with patterns
ECOOP'07 Proceedings of the 21st European conference on Object-Oriented Programming
Hi-index | 0.00 |
We present a simple extension of typed &lgr;-claculus where functions can be overloaded by adding different “pieces of code”. In short, the code of an overloaded function is formed by several branches of code; the branch to execute is chosen, when the function is applied, according to a particular selection rule which depends on the type of the argument. The crucial feature of the present approach is that a subtyping relation is defied among types, such that the type of a term generally decreases during computation, and this fact induces a distinction between the “compile-time” type and the “run-time”type of a term. We study the case of overloaded functions where the branch selection depends on the run-time type of the argument, so that overloading cannot be eliminated by a static analysis of code, but is an essential feature to be dealt with during computation. We prove Confluence and Strong Normalization for this calculus as well as a generalized Subject-Reduction theorem (but proofs are ommitted in this abstract.The definition of this calculus is driven by the understanding of object-oriented features and the connections between our calculus and object-orientedness are extensively stressed. We show that this calculus provides a foundation for typed object-oriented languages which solves some of the problems of the standard record-based approach. It also provides a type-discipline for a relevant fragment of the “core framework” of CLOS.