OOPSLA '87 Conference proceedings on Object-oriented programming systems, languages and applications
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
POPL '90 Proceedings of the 17th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
OOPSLA/ECOOP '90 Proceedings of the European conference on object-oriented programming on Object-oriented programming systems, languages, and applications
F-bounded polymorphism for object-oriented programming
FPCA '89 Proceedings of the fourth international conference on Functional programming languages and computer architecture
The programming language jigsaw: mixins, modularity and multiple inheritance
The programming language jigsaw: mixins, modularity and multiple inheritance
The essence of functional programming
POPL '92 Proceedings of the 19th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Partial evaluation and automatic program generation
Partial evaluation and automatic program generation
Computation and reasoning: a type theory for computer science
Computation and reasoning: a type theory for computer science
Proceedings of the first ACM SIGPLAN international conference on Functional programming
A monotonic superclass linearization for Dylan
Proceedings of the 11th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
POPL '98 Proceedings of the 25th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Cayenne—a language with dependent types
ICFP '98 Proceedings of the third ACM SIGPLAN international conference on Functional programming
N degrees of separation: multi-dimensional separation of concerns
Proceedings of the 21st international conference on Software engineering
Featherweight Java: a minimal core calculus for Java and GJ
Proceedings of the 14th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
POPL '77 Proceedings of the 4th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
A Theory of Objects
Program Generation, Termination, and Binding-Time Analysis
GPCE '02 Proceedings of the 1st ACM SIGPLAN/SIGSOFT conference on Generative Programming and Component Engineering
Subtyping Calculus of Construction (Extended Abstract)
MFCS '97 Proceedings of the 22nd International Symposium on Mathematical Foundations of Computer Science
A Statically Safe Alternative to Virtual Types
ECCOP '98 Proceedings of the 12th European Conference on Object-Oriented Programming
Implementing Layered Designs with Mixin Layers
ECCOP '98 Proceedings of the 12th European Conference on Object-Oriented Programming
ECOOP '01 Proceedings of the 15th European Conference on Object-Oriented Programming
Subtyping with Singleton Types
CSL '94 Selected Papers from the 8th International Workshop on Computer Science Logic
Proceedings of the 25th International Conference on Software Engineering
LICS '96 Proceedings of the 11th Annual IEEE Symposium on Logic in Computer Science
Dependent types in practical programming
Dependent types in practical programming
Singleton kinds and singleton types
Singleton kinds and singleton types
Refinements and multi-dimensional separation of concerns
Proceedings of the 9th European software engineering conference held jointly with 11th ACM SIGSOFT international symposium on Foundations of software engineering
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
Journal of Functional Programming
Scalable extensibility via nested inheritance
OOPSLA '04 Proceedings of the 19th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Conference record of the 33rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
J&: nested intersection for scalable software composition
Proceedings of the 21st annual ACM SIGPLAN conference on Object-oriented programming systems, languages, and applications
Lightweight family polymorphism
APLAS'05 Proceedings of the Third Asian conference on Programming Languages and Systems
Evaluating support for features in advanced modularization technologies
ECOOP'05 Proceedings of the 19th European conference on Object-Oriented Programming
Proceedings of the 22nd annual ACM SIGPLAN conference on Object-oriented programming systems and applications
An Algebra for Features and Feature Composition
AMAST 2008 Proceedings of the 12th international conference on Algebraic Methodology and Software Technology
Feature featherweight java: a calculus for feature-oriented programming and stepwise refinement
GPCE '08 Proceedings of the 7th international conference on Generative programming and component engineering
FEATUREHOUSE: Language-independent, automated software composition
ICSE '09 Proceedings of the 31st International Conference on Software Engineering
An extension for feature algebra
FOSD '09 Proceedings of the First International Workshop on Feature-Oriented Software Development
Proceedings of the 37th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A calculus for uniform feature composition
ACM Transactions on Programming Languages and Systems (TOPLAS)
Superimposition: a language-independent approach to software composition
SC'08 Proceedings of the 7th international conference on Software composition
Type safety for feature-oriented product lines
Automated Software Engineering
An algebraic foundation for automatic feature-based program synthesis
Science of Computer Programming
DeepFJig: modular composition of nested classes
Proceedings of the 9th International Conference on Principles and Practice of Programming in Java
Access control in feature-oriented programming
Science of Computer Programming
Featherweight Jigsaw - Replacing inheritance by composition in Java-like languages
Information and Computation
A meta-circular language for active libraries
PEPM '13 Proceedings of the ACM SIGPLAN 2013 workshop on Partial evaluation and program manipulation
Hi-index | 0.00 |
In mainstream OO languages, inheritance can be used to add new methods, or to override existing methods. Virtual classes and feature oriented programming are techniques which extend the mechanism of inheritance so that it is possible to refine nested classes as well. These techniques are attractive for programming in the large, because inheritance becomes a tool for manipulating whole class hierarchies rather than individual classes. Nevertheless, it has proved difficult to design static type systems for virtual classes, because virtual classes introduce dependent types. The compile-time type of an expression may depend on the run-time values of objects in that expression.We present a formal object calculus which implements virtual classes in a type-safe manner. Our type system uses a novel technique based on prototypes, which blur the distinction between compile-time and run-time. At run-time, prototypes act as objects, and they can be used in ordinary computations. At compile-time, they act as types. Prototypes are similar in power to dependent types, and subtyping is shown to be a form of partial evaluation. We prove that prototypes are type-safe but undecidable, and briefly outline a decidable semi-algorithm for dealing with them.