On understanding types, data abstraction, and polymorphism
ACM Computing Surveys (CSUR) - The MIT Press scientific computation series
Information and Computation - Semantics of Data Types
Virtual classes: a powerful mechanism in object-oriented programming
OOPSLA '89 Conference proceedings on Object-oriented programming systems, languages and applications
LFP '90 Proceedings of the 1990 ACM conference on LISP and functional programming
Strong typing of object-oriented languages revisited
OOPSLA/ECOOP '90 Proceedings of the European conference on object-oriented programming on Object-oriented programming systems, languages, and applications
Object-oriented programming without recursive types
POPL '93 Proceedings of the 20th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Manifest types, modules, and separate compilation
POPL '94 Proceedings of the 21st ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A type-theoretic approach to higher-order modules with sharing
POPL '94 Proceedings of the 21st ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Bounded quantification is undecidable
Information and Computation
Design patterns: elements of reusable object-oriented software
Design patterns: elements of reusable object-oriented software
Object-oriented programming in the BETA programming language
Object-oriented programming in the BETA programming language
Theoretical Computer Science
Proceedings of the 24th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Pizza into Java: translating theory into practice
Proceedings of the 24th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Adding type parameterization to the Java language
Proceedings of the 12th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Making the future safe for the past: adding genericity to the Java programming language
Proceedings of the 13th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Compatible genericity with run-time types for the Java programming language
Proceedings of the 13th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
The C++ Programming Language, Third Edition
The C++ Programming Language, Third Edition
A Theory of Objects
TACS '97 Proceedings of the Third International Symposium on Theoretical Aspects of Computer Software
A Statically Safe Alternative to Virtual Types
ECCOP '98 Proceedings of the 12th European Conference on Object-Oriented Programming
Unifying Genericity - Combining the Benefits of Virtual Types and Parameterized Classes
ECOOP '99 Proceedings of the 13th European Conference on Object-Oriented Programming
A Unifying Type-Theoretic Framework for Objects
STACS '94 Proceedings of the 11th Annual Symposium on Theoretical Aspects of Computer Science
PolyTOIL: A Type-Safe Polymorphic Object-Oriented Language
ECOOP '95 Proceedings of the 9th European Conference on Object-Oriented Programming
Unifying Genericity - Combining the Benefits of Virtual Types and Parameterized Classes
ECOOP '99 Proceedings of the 13th European Conference on Object-Oriented Programming
Towards a Unified Programming Language
ECOOP '00 Proceedings of the 14th European Conference on Object-Oriented Programming
On Variance-Based Subtyping for Parametric Types
ECOOP '02 Proceedings of the 16th European Conference on Object-Oriented Programming
Virtual Classes and Their Implementation
CC '01 Proceedings of the 10th International Conference on Compiler Construction
The when, why and why not of the BETA programming language
Proceedings of the third ACM SIGPLAN conference on History of programming languages
Proceedings of the ACM international conference on Object oriented programming systems languages and applications
Metamodeling semantics of multiple inheritance
Science of Computer Programming
Using metadata transformations to integrate class extensions in an existing class hierarchy
APLAS'06 Proceedings of the 4th Asian conference on Programming Languages and Systems
Hi-index | 0.00 |
Virtual types have been proposed as a notation for generic programming in object-oriented languages--an alternative to the more familiar mechanism of parametric classes. The tradeoffs between the two mechanisms are a matter of current debate: for many examples, both appear to offer convenient (indeed almost interchangeable) solutions; in other situations, one or the other seems to be more satisfactory. However, it has proved difficult to draw rigorous comparisons between the two approaches, partly because current proposals for virtual types vary considerably in their details, and partly because the proposals themselves are described rather informally, usually in the complicating context of full-scale language designs. Work on the foundations of object-oriented languages has already established a clear connection between parametric classes and the polymorphic functions found in familiar typed lambda-calculi. Our aim here is to explore a similar connection between virtual types and dependent records. We present, by means of examples, a straight forward model of objects with embedded type fields in a typed lambda-calculus with subtyping, type operators, fixed points, dependent functions, and dependent records with both "bounded" and "manifest" type fields (this combination of features can be viewed as a measure of the inherent complexity of virtual types). Using this model, we then discuss some of the major differences between previous proposals and show why some can be checked statically while others require run-time checks. We also investigate how the partial "duality" of virtual types and parametric classes can be understood in terms of translations between universal and (dependent) existential types.