Proceedings of the 18th Annual ACM SIGPLAN Conference on Object-Oriented Programing, Systems, Languages, and Applications 2003
DOI: 10.1145/949305.949316
|View full text |Cite
|
Sign up to set email alerts
|

A first-class approach to genericity

Abstract: This paper describes how to add first-class generic typesincluding mixins-to strongly-typed OO languages with nominal subtyping such as Java and C#. A generic type system is "first-class" if generic types can appear in any context where conventional types can appear. In this context, a mixin is simply a generic class that extends one of its type parameters, e.g., a class C that extends T. Although mixins of this form are widely used in C++ (via templates), they are clumsy and error-prone because C++ treats … Show more

Help me understand this report

Search citation statements

Order By: Relevance

Paper Sections

Select...
1
1
1
1

Citation Types

0
27
0

Year Published

2004
2004
2012
2012

Publication Types

Select...
6

Relationship

0
6

Authors

Journals

citations
Cited by 39 publications
(27 citation statements)
references
References 21 publications
0
27
0
Order By: Relevance
“…In the case of methods with the same name occurring in different mixins (like the aforementioned SetBufferSize), mixins permit explicit direct control of the order in which those methods will override each other, however, they might not allow the resulting class to have all variants. Nevertheless, there are two proposals offering this feature: MixGen [3] and MixedJava [24]. In the MixGen language, the class obtained from applying both CompressedStream and BufferedStream mixins will keep both variants, while giving access to one of them at each moment, depending on the static type of the variable referring to the object.…”
Section: Limitations Of Composition Mechanismsmentioning
confidence: 99%
See 3 more Smart Citations
“…In the case of methods with the same name occurring in different mixins (like the aforementioned SetBufferSize), mixins permit explicit direct control of the order in which those methods will override each other, however, they might not allow the resulting class to have all variants. Nevertheless, there are two proposals offering this feature: MixGen [3] and MixedJava [24]. In the MixGen language, the class obtained from applying both CompressedStream and BufferedStream mixins will keep both variants, while giving access to one of them at each moment, depending on the static type of the variable referring to the object.…”
Section: Limitations Of Composition Mechanismsmentioning
confidence: 99%
“…Notably, there are languages offering constructs and mechanisms to deal with conflicts: Delphi [2], C [28], Eiffel [41], MixedJava [24], MixGen [3] 5 , McJava [32,31] are some examples. An analysis of the main features of these proposals can be found in [37].…”
Section: Dealing With Accidental Name Clashesmentioning
confidence: 99%
See 2 more Smart Citations
“…They allow programmers to carry out such a change without rewriting it in each inheriting class. In languages such as MODULA-π [16] the repeating change to the base class can be captured in a mixin M , which, given a class c, generates a class M c such that M c inherits from c. In languages with first-class genericity, mixins can be emulated by writing e.g., template<typename c> class M: public c { ... } in C++, or class M<c> extends c in NEXTGEN [17].…”
Section: Parameterized Class Modificationmentioning
confidence: 99%