A parallel object-oriented language with inheritance and subtyping
OOPSLA/ECOOP '90 Proceedings of the European conference on object-oriented programming on Object-oriented programming systems, languages, and applications
Decidable bounded quantification
POPL '94 Proceedings of the 21st ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Bounded quantification is undecidable
Information and Computation
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
Featherweight Java: a minimal core calculus for Java and GJ
ACM Transactions on Programming Languages and Systems (TOPLAS)
Simplifying subtyping constraints: a theory
Information and Computation
SAS '96 Proceedings of the Third International Symposium on Static Analysis
C# Precisely
Concurrency and Computation: Practice & Experience - Formal Techniques for Java-like Programs
Generalized algebraic data types and object-oriented programming
OOPSLA '05 Proceedings of the 20th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Scalable component abstractions
OOPSLA '05 Proceedings of the 20th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Variant parametric types: A flexible subtyping scheme for generics
ACM Transactions on Programming Languages and Systems (TOPLAS)
Type safety of generics for the .NET common language runtime
ESOP'06 Proceedings of the 15th European conference on Programming Languages and Systems
An object-oriented approach to datatype-generic programming
Proceedings of the 2006 ACM SIGPLAN workshop on Generic programming
A flow-based approach for variant parametric types
Proceedings of the 21st annual ACM SIGPLAN conference on Object-oriented programming systems, languages, and applications
cJ: enhancing java with safe type conditions
Proceedings of the 6th international conference on Aspect-oriented software development
Building Scalable Libraries with cJ
ICSE COMPANION '07 Companion to the proceedings of the 29th International Conference on Software Engineering
Proceedings of the 23rd ACM SIGPLAN conference on Object-oriented programming systems languages and applications
JavaGI in the battlefield: practical experience with generalized interfaces
GPCE '09 Proceedings of the eighth international conference on Generative programming and component engineering
Proceedings of the 24th ACM SIGPLAN conference on Object oriented programming systems languages and applications
Type classes as objects and implicits
Proceedings of the ACM international conference on Object oriented programming systems languages and applications
A language for generic programming in the large
Science of Computer Programming
JavaGI: The Interaction of Type Classes with Interfaces and Inheritance
ACM Transactions on Programming Languages and Systems (TOPLAS)
Taming the wildcards: combining definition- and use-site variance
Proceedings of the 32nd ACM SIGPLAN conference on Programming language design and implementation
Separating ownership topology and encapsulation with generic universe types
ACM Transactions on Programming Languages and Systems (TOPLAS)
Type checking annotation-based product lines
ACM Transactions on Software Engineering and Methodology (TOSEM)
Java wildcards meet definition-site variance
ECOOP'12 Proceedings of the 26th European conference on Object-Oriented Programming
A variability-aware module system
Proceedings of the ACM international conference on Object oriented programming systems languages and applications
Proceedings of the ACM international conference on Object oriented programming systems languages and applications
ECOOP'07 Proceedings of the 21st European conference on Object-Oriented Programming
ESOP'13 Proceedings of the 22nd European conference on Programming Languages and Systems
Open GADTs and declaration-site variance: a problem statement
Proceedings of the 4th Workshop on Scala
Harmonizing classes, functions, tuples, and type parameters in virgil iii
Proceedings of the 34th ACM SIGPLAN conference on Programming language design and implementation
JavaUI: effects for controlling UI object access
ECOOP'13 Proceedings of the 27th European conference on Object-Oriented Programming
Hi-index | 0.00 |
Generic types in C$^{\sharp}$ behave invariantly with respect to subtyping. We propose a system of type-safe variance for C$^{\sharp}$ that supports the declaration of covariant and contravariant type parameters on generic types. To support more widespread application of variance we also generalize the existing constraint mechanism with arbitrary subtype assertions on classes and methods. This extension is useful even in the absence of variance, and subsumes equational constraints proposed for Generalized Algebraic Data Types (GADTs). We formalize the subtype relation in both declarative and syntax-directed style, and describe and prove the correctness of algorithms for constraint closure and subtyping. Finally, we formalize and prove a type safety theorem for a featherweight language with variant classes and generalized constraints.