Smalltalk-80: the language and its implementation
Smalltalk-80: the language and its implementation
On understanding types, data abstraction, and polymorphism
ACM Computing Surveys (CSUR) - The MIT Press scientific computation series
The C++ programming language
Type evolution in an object-oriented database
Research directions in object-oriented programming
TS: an optimizing compiler for smalltalk
OOPSLA '88 Conference proceedings on Object-oriented programming systems, languages and applications
Objects as closures: abstract semantics of object-oriented languages
LFP '88 Proceedings of the 1988 ACM conference on LISP and functional programming
Database programming in Machiavelli—a polymorphic language with static type inference
SIGMOD '89 Proceedings of the 1989 ACM SIGMOD international conference on Management of data
A model for a reflective object-oriented language
OOPSLA/ECOOP '88 Proceedings of the 1988 ACM SIGPLAN workshop on Object-based concurrent programming
Modeling complex structures in object-oriented logic programming
PODS '89 Proceedings of the eighth ACM SIGACT-SIGMOD-SIGART symposium on Principles of database systems
A denotational semantics of inheritance and its correctness
OOPSLA '89 Conference proceedings on Object-oriented programming systems, languages and applications
Static type inference for parametric classes
OOPSLA '89 Conference proceedings on Object-oriented programming systems, languages and applications
ABC programmer's handbook
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
POPL '90 Proceedings of the 17th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Exception handling and object-oriented programming: towards a synthesis
OOPSLA/ECOOP '90 Proceedings of the European conference on object-oriented programming on Object-oriented programming systems, languages, and applications
The complexity of type inference for higher-order lambda calculi
POPL '91 Proceedings of the 18th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
An extension of standard ML modules with subtyping and inheritance
POPL '91 Proceedings of the 18th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Static type inference in a dynamically typed language
POPL '91 Proceedings of the 18th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A type system for object-oriented database programming and querying languages
DBPL3 Proceedings of the third international workshop on Database programming languages : bulk types & persistent data: bulk types & persistent data
POPL '77 Proceedings of the 4th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Meta-Level Architectures and Reflection
Meta-Level Architectures and Reflection
Reification: Reflection without metaphysics
LFP '84 Proceedings of the 1984 ACM Symposium on LISP and functional programming
Efficient handling of multiple inheritance hierarchies
OOPSLA '93 Proceedings of the eighth annual conference on Object-oriented programming systems, languages, and applications
ECOOP '93 Proceedings of the 7th European Conference on Object-Oriented Programming
CLAIRE: combining sets, search and rules to better express algorithms
Theory and Practice of Logic Programming
SysObjC: C extension for development of object-oriented operating systems
Proceedings of the 3rd workshop on Programming languages and operating systems: linguistic support for modern operating systems
Hi-index | 0.00 |
This paper proposes an extension of the notion of method as it is currently used in most object-oriented languages. We define polymethods as methods that we can attach directly to types, as opposed to classes and that we can describe with a second-order type. Two benefits result from this extension; first, the expressive power of the language is improved with better modeling abilities. Next, second-order types yield a more powerful (precise) type inference, which extends the range of static type checking in a truly extensible object-oriented language. We first show that extensible object-oriented languages present many difficulties for static type-checking and that second-order types are necessary to get stronger type-checking. We illustrate how to combine polymethods through type inheritance and propose a technique based on abstract interpretation to derive a second-order type for new polymethods.