A Theory of Type Polymorphism in Programming

@article{Milner1978ATO,
  title={A Theory of Type Polymorphism in Programming},
  author={Robin Milner},
  journal={J. Comput. Syst. Sci.},
  year={1978},
  volume={17},
  pages={348-375}
}
  • R. Milner
  • Published 1978
  • Computer Science
  • J. Comput. Syst. Sci.
The aim of this work is largely a practical one. [...] Key Method A Semantic Soundness Theorem (based on a formal semantics for the language) states that well-type programs cannot “go wrong” and a Syntactic Soundness Theorem states that if fl accepts a program then it is well typed. We also discuss extending these results to richer languages; a type-checking algorithm based on w is in fact already implemented and working, for the metalanguage ML in the Edinburgh LCF system,Expand
Conjunctional type assignment in programming languages
TLDR
The aim of this work is to widen ML-type polymorphism to a more comprehensive form with a formal type discipline for polymorphic expressions in the context of a simple programming language, and a compile time type-checking algorithm R which enforces the discipline. Expand
On the Use of Types in Logic Programming
TLDR
Based on the notion of useless expressions, a method is developed that allows static program analysis for finding type errors, which enables error detection to be more precise than hitherto possible. Expand
Pure Type Systems for Functional Programming [ Extended Abstract
We present a functional programming language based on Pure Type Systems (PTSs). We show how we can de ne such a language by extending the PTS framework with algebraic data types, case expressions andExpand
Type assignment in programming languages
TLDR
A family of polymorphic type disciplines for programming languages similar to the type discipline of ML, the metalanguage of the LCF system, which are based on the use of type inference systems to define the notion of well typed expressions and programs and on theUse of type assignment algorithms to compute the type or types that can be inferred for those same expressions or programs. Expand
A types-as-sets semantics for milner-style polymorphism
  • M. Wand
  • Computer Science
  • POPL '84
  • 1984
TLDR
A semantics for Milner-style polymorphism in which types are sets in which expressions are polymorphic, since they may have more than one correct typing, but values are not. Expand
Pure Type Systems for Functional Programming
TLDR
A functional programming language based on Pure Type Systems PTSs is presented by extending the PTS framework with algebraic data types case expressions and definitions and presents an efficient type checking algorithm and an interpreter for this language. Expand
A Type System for Tom
TLDR
This paper presents a type system with subtyping for Tom, that is compatible with Java's type system, and that performs both type checking and type inference, and proposes an algorithm that checks if all patterns of a Tom program are well-typed. Expand
An Inference Algorithm for Strictness
TLDR
An algorithm for detecting strictness information in typed functional programs based on a type inference system which allows to exploit the type structure of the language for the investigation of program properties and can be applied to polymorphic languages like Lazy ML. Expand
An approach to checking the non-disjointness of types in functional programming
TLDR
It turns out that it is a central question for the new type checker to check whether two types denote sets of values that are non-disjoint, and an algorithm CE is specified that approximates this question and proves the main properties of CE. Expand
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. Expand
...
1
2
3
4
5
...

References

SHOWING 1-10 OF 38 REFERENCES
Toward a mathematical semantics for computer languages
TLDR
The purpose of a mathematical semantics is to give a correct and meaningful correspondence between programs and mathematical entities in a way that is entirely independent of an implementation. Expand
The treatment of data types in EL1
TLDR
The EL1 language contains a number of features specifically designed to simultaneously satisfy both natural problem-oriented notation and efficient implementation, in a context that allows efficient compiled code and compact data representation. Expand
Programming with abstract data types
TLDR
An approach which allows the set of built-in abstractions to be augmented when the need for a new data abstraction is discovered and is an outgrowth of work on designing a language for structured programming. Expand
The next 700 programming languages
A family of unimplemented computing languages is described that is intended to span differences of application area by a unified framework. This framework dictates the rules about the uses ofExpand
The Principal Type-Scheme of an Object in Combinatory Logic
One of the aims of combinatory logic is to study the most basic properties of functions and other concepts, with as few restrictions as possible; hence in the simplest form of combinatory logic thereExpand
Some ideas on data types in high-level languages
TLDR
The need for a notation for iterating over the elements of any finite set and the use of the domain of an array as a data type are explored. Expand
A Machine-Oriented Logic Based on the Resolution Principle
TLDR
The paper concludes with a discussion of several principles which are applicable to the design of efficient proof-procedures employing resolution as the basle logical process. Expand
Models for Various Type-Free Calculi
Publisher Summary This chapter discusses models of various type free calculi. The range of arguments or range of values of a function should consist wholly or partly of functions. The derivative, asExpand
Syntactic control of interference
TLDR
This work shows how to eliminate difficulties by imposing syntactic restrictions, without prohibiting the kind of constructive interference which occurs with higher-order procedures or SIMULA classes, among components of collections named by single identifiers. Expand
Abstraction and Verification in Alphard: Introduction to Language and Methodology
TLDR
This paper attempts to capture the symbiotic influence of these two goals on the design of Alphard by interleaving the language description with the presentation of a proof technique and discussion of programming methodology. Expand
...
1
2
3
4
...