by
Mark Day
,
Robert Gruber
,
Barbara Liskov
,
Andrew C. Myers
In Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA
Add To MetaCart
Abstract:
All object-oriented languages provide support for subtype polymorphism, which allows the writing of generic code that works for families of related types. There is also a need, however, to write code that is generic across types that have no real family relationship. To satisfy this need a programming language must provide a mechanism for parametric polymorphism, allowing for types as parameters to routines and types. We show that to support modular programming and separate compilation there must be a mechanism for constraining the actual parameters of the routine or type. We describe a simple and powerful constraint mechanism and compare it with constraint mechanisms in other languages in terms of both ease of use and semantic expressiveness. We also discuss the interaction between subtype and parametric polymorphism: we discuss the subtype relations that can exist between instantiations of parameterized types, and which of those relations are useful and can be implemented efficiently...
Citations
|
467
|
A semantics of multiple inheritance
– Cardelli
- 1984
|
|
349
|
A behavioral notion of subtyping
– Liskov, Wing
- 1994
|
|
193
|
and Bjarne Stroustrup. The Annotated C++ Reference Manual
– Ellis
- 1990
|
|
165
|
Abstraction and Specification in Program Development
– Liskov, Guttag
- 1986
|
|
127
|
PolyTOIL: A type-safe polymorphic object-oriented language
– Bruce, Schuett, et al.
- 1995
|
|
101
|
A proposal to make Eiffel typesafe
– Cook
- 1989
|
|
62
|
A Fast Method Dispatcher for Compiled Languages with Multiple Inheritance
– Dixon, McKee, et al.
- 1989
|
|
55
|
Genericity versus Inheritance
– Meyer
- 1986
|
|
53
|
Multiple Inheritance for C
– Stroustrup
- 1987
|
|
32
|
Trellis object-based environment language reference manual
– Schaffert, Cooper, et al.
- 1985
|
|
28
|
Fast Dispatch Mechanisms for Stock Hardware
– Rose
- 1988
|
|
27
|
A language extension for expressing constraints on data access
– JONES, LISKOV
- 1978
|
|
19
|
Bidirectional object layout for separate compilation
– Myers
- 1995
|
|
14
|
Aspects of implementing CLU
– Atkinson, Liskov, et al.
- 1978
|
|
12
|
Polymorphism and subtyping in interfaces
– Katiyar, Luckham, et al.
- 1994
|
|
7
|
Fast object operations in a persistent programming system
– Myers
- 1994
|
|
2
|
Efficient Implementation of Parameterized Types in an Object-Oriented Language. Programming Methodology Group Memo 91
– Myers, Liskov
- 1994
|
|
2
|
Types in school
– Rodrigues, Ierusalimschy, et al.
- 1993
|
|
1
|
Personal communication. [BHJ + 87] Andrew Black
– Black, Hutchinson
- 1995
|