On understanding types, data abstraction, and polymorphism

  title={On understanding types, data abstraction, and polymorphism},
  author={Luca Cardelli and Peter Wegner},
  journal={ACM Comput. Surv.},
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… 

Figures from this paper

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

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

This dissertation proposes type intervals as a unifying concept for expressing (1--3) and other related constructs and develops an extension of F-omega with interval kinds as a formal theory of higher-order subtyping with type intervals, and shows how the familiar concepts ofHigher-order bounded quantification, bounded operator abstraction and singleton kinds can all be encoded in a semantics-preserving way using interval kinds.

Polymorphic Type Inference for Languages with Overloading and Subtyping

This dissertation extends the Hindley/Milner/Damas type system to incorporate overloading and subtyping, and proves that it is undecidable whether a given constraint set is satisfiable; this difficulty leads us to impose restrictions on overloading.

Polymorphic type inference and abstract data types

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

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.

Types and programming languages

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.

Polymorphic typing of an algorithmic language

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.

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

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

This report summarizes a preliminary investigation of the expressiveness of a programming language combining intersection types, union types, and polymorphism.



Basic Polymorphic Typechecking

A Theory of Type Polymorphism in Programming

  • R. Milner
  • Computer Science
    J. Comput. Syst. Sci.
  • 1978

On the unification of data and program abstraction in Ada

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

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

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.

GALILEO: a strongly-typed, interactive conceptual language

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

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

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.

Type definitions with parameters

This paper shows that unless the use of such parameterized definitions is restricted, new (unparameterized) types may be defined which more closely resemble deterministic context-free languages.