On understanding types, data abstraction, and polymorphism

@article{Cardelli1985OnUT,
  title={On understanding types, data abstraction, and polymorphism},
  author={Luca Cardelli and Peter Wegner},
  journal={ACM Comput. Surv.},
  year={1985},
  volume={17},
  pages={471-522}
}
Our objective is to understand the notion of type in programming languages, present a model of typed, polymorphic programming languages that reflects recent research in type theory, and examine the relevance of recent research to the design of practical programming languages. Object-oriented languages provide both a framework and a motivation for exploring the interaction among the concepts of type, data abstraction, and polymorphism, since they extend the notion of type to data abstraction and… 
A study of semantics, types and languages for databases and object-oriented programming
TLDR
This thesis attempts to construct one such formalism and proposes a programming language that uniformly integrate all of the above features and a prototype implementation of Machiavelli that embodies most of the features presented in this thesis has been done in Standard ML of New Jersey.
Higher-Order Subtyping with Type Intervals
Modern, statically typed programming languages provide various abstraction facilities at both the term- and type-level. Common abstraction mechanisms for types include parametric polymorphism -- a
Polymorphic type inference for languages with overloading and subtyping
Many computer programs have the property that they work correctly on a variety of types of input; such programs are called polymorphic. Polymorphic type systems support polymorphism by allowing
Polymorphic type inference and abstract data types
TLDR
This work shows how to add significant expressive power to statically typed functional languages with explicit type variables by incorporating first-class abstract types as an extension of algebraic data types and extends record types to allow abstract components.
Polymorphism and type inference in database programming
TLDR
An extension to the type system of ML that captures the polymorphic nation of field selection together with a techniques that generalizes relational operators to arbitrary data structures provides a statically typed language in which generalized relational databases may be cleanly represented as typed structures.
Polymorphic typing of an algorithmic language
TLDR
Two new approaches to the polymorphic typing of these non-applicative features of ML with imperative features proposed so far are studied, one of which relies on switching to "by-name" semantics for the constructs of polymorphism, instead of the usual " by-value" semantics.
Types and programming languages
TLDR
This text provides a comprehensive introduction both to type systems in computer science and to the basic theory of programming languages, with a variety of approaches to modeling the features of object-oriented languages.
Polymorphism and Inference in Database Programming
The polymorphic type system of ML can be extended in two ways to make it the appropriate basis of a database programming language. The first is an extension to the language of types that captures the
Contextual polymorphism
TLDR
Contextual polymorphism is a variant of parametric polymorphism that is based on contexts, which are abstractions of collections of declarations, and assertions, which link polymorphic routines to the environments that call them.
Programming with intersection types, union types, and polymorphism
Type systems based on intersection types have been studied extensively in recent years, both as tools for the analysis of the pure A-calculus and, more recently, as the basis for practical
...
1
2
3
4
5
...

References

SHOWING 1-10 OF 98 REFERENCES
Basic Polymorphic Typechecking
TLDR
This work is mostly interested in a particularly orderly form of polymorphism called parametric polymorphism, a property of programs which are parametric with respect to the type of some of their identifiers.
A Theory of Type Polymorphism in Programming
  • R. Milner
  • Computer Science
    J. Comput. Syst. Sci.
  • 1978
TLDR
This work presents a formal type discipline for polymorphic procedures in the context of a simple programming language, and a compile time type-checking algorithm w which enforces the discipline.
On the unification of data and program abstraction in Ada
TLDR
It is suggested in the conclusion that the understanding of abstraction for object-oriented languages and of other language design, implementation, and environment issues will have progressed sufficiently by 1985 to warrant the design of a successor to Ada by the late 1980s.
Abstract types have existential types
TLDR
This work uses a second-order typed lambda calculus SOL to show how data algebras may be given types, passed as parameters, and returned as results of function calls.
HOPE: An experimental applicative language
TLDR
An applicative language called HOPE is described and discussed, to produce a very simple programming language which encourages the construction of clear and manipulable programs.
Type Inference and Type Containment
TLDR
Type inference, the process of assigning types to untyped expressions, may be motivated by the design of a typed language or semantical considerations on the meanings of types and expressions, or by a general class of semantic models of type inference.
GALILEO: a strongly-typed, interactive conceptual language
TLDR
Galileo is a strongly-typed, interactive programming language designed specifically to support semantic data model features (classification, aggregation, and specialization), as well as the abstraction mechanisms of modern programming languages (types, abstract types, and modularization).
Three Approaches to Type Structure
We examine three disparate views of the type structure of programming languages: Milner's type deduction system and polymorphic let construct, the theory of subtypes and generic operators, and the
A Kernel Language for Abstract Data Types and Modules
TLDR
This work uses typed lambda calculus with bindings, declarations, and types as first-class values to build modules, interfaces and implementations, abstract data types, generic types, recursive types, and unions in a concise operational semantics given by inference rules.
A Semantics of Multiple Inheritance
TLDR
Programming with taxonomically organized data is often called objectoriented programming, and has been advocated as an effective way of structuring programming environments, data bases, and large systems in general.
...
1
2
3
4
5
...