# 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…

## 2,100 Citations

A study of semantics, types and languages for databases and object-oriented programming

- Computer Science
- 1989

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

- Mathematics
- 2017

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

- Mathematics
- 1992

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

- Computer ScienceTOPL
- 1994

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

- Computer ScienceTODS
- 1996

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

- Computer Science
- 1992

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

- Computer Science
- 2002

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

- 2014

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

- Computer Science
- 1992

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

- Mathematics
- 1991

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…

## References

SHOWING 1-10 OF 98 REFERENCES

Basic Polymorphic Typechecking

- Computer ScienceSci. Comput. Program.
- 1987

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

- Computer ScienceJ. Comput. Syst. Sci.
- 1978

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

- Computer SciencePOPL '83
- 1983

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

- Computer SciencePOPL
- 1985

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

- Computer ScienceLISP Conference
- 1980

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

- Mathematics, Computer ScienceSemantics of Data Types
- 1984

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

- Computer ScienceTODS
- 1985

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

- Mathematics, Computer ScienceTAPSOFT, Vol.1
- 1985

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

- Computer ScienceSemantics of Data Types
- 1984

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

- Computer ScienceInf. Comput.
- 1984

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.