## Operational Semantics and Polymorphic Type Inference (1988)

Citations: | 94 - 2 self |

### BibTeX

@TECHREPORT{Tofte88operationalsemantics,

author = {Mads Tofte},

title = {Operational Semantics and Polymorphic Type Inference},

institution = {},

year = {1988}

}

### Years of Citing Articles

### OpenURL

### Abstract

Three languages with polymorphic type disciplines are discussed, namely the *-calculus with Milner's polymorphic type discipline; a language with imperative features (polymorphic references); and a skeletal module language with structures, signatures and functors. In each of the two first cases we show that the type inference system is consistent with an operational dynamic semantics. On the module level, polymorphic types correspond to signatures. There is a notion of principal signature. So-called signature checking is the module level equivalent of type checking. In particular, there exists an algorithm which either fails or produces a principal signature.

### Citations

1212 |
The Lambda Calculus: its Syntax and Semantics
- Barendregt
- 1984
(Show Context)
Citation Context ... generally, typing of formal expressions. Hindley's seminal paper [22] concerns the typing of objects in combinatory logic. The expressions studied by Hindley can be thought of as the lambda calculus =-=[5]-=- with constants. He considers type expressions built from base types using the type constructor for function space. In Hindley's terminology, a type scheme is a type in which type variables can occur.... |

513 | February/March). A semantics of multiple inheritance
- Cardelli
- 1988
(Show Context)
Citation Context ...h typing of labelled records. If, for example, function f selects the component labelled L from its argument, then it should be possible to apply f to all arguments that have an L component. Cardelli =-=[8]-=- introduced one system for subtyping and, more recently, Wand [42] has given a similar type inference system. Principal types do not exist for Cardelli's system. Due to a mistake principal types do no... |

246 | Principal Type Schemes for Functional Programs - Damas, Milner |

191 |
An introduction to inductive definitions
- Aczel
- 1978
(Show Context)
Citation Context ...ns TE(data) = u list ref TE(result) = u list ref Note that u remains free as u after "*l:" occurs free in the type environment, namely in the type of l. Now let fast reverse= e1 in begin fast reverse =-=[1, 9, 7, 5]-=-; fast reverse [true, false, false] end is typable using rule 4.4, which allows the generalization from u list ! u list to 8u:u list ! u list . As one would expect, since fast reverse has type 8u:u li... |

98 |
Type Assignment in Programming Languages
- Damas
- 1985
(Show Context)
Citation Context ...e for defining polymorphism. Given a type inference system in the form of a collection of type inference rules, how do we investigate soundness? The first soundness proofs used denotational semantics =-=[14,13]-=-. Types are seen as ideals of values in a model of the lambda calculus and it is proved that if by the type inference system an expression has a type then the value denoted by the expression is a memb... |

59 | A kernal language for abstract data types and modules - Burstal, Lampson - 1984 |

57 |
An Algebraic Semantics Approach to the Effective Resolution of Type Equations
- Ait-Kaci
- 1986
(Show Context)
Citation Context ...e let expressions allows us to generalize on u1 and u2 in the type of fold. However, we will not be able to type the very similar let fold= e1 in let fast reverse= fold cons nil in begin fast reverse =-=[3,5,7]-=-; fast reverse [true, true, false] endsCHAPTER 4. THE TYPE DISCIPLINE 44 because fold cons nil will be deemed expansive so that fast reverse cannot get the polymorphic type 8u:u list ! u list . This i... |

35 |
Principal type schemes and -calculus semantics
- Coppo, Dezani-Ciancaglini, et al.
- 1980
(Show Context)
Citation Context ...done effectively by a type checker [27,14]. Milner's type discipline is used in the language Standard ML. Another extension of Hindley's work is the introduction of intersection types by Coppo et al. =-=[10,11,12,38]-=-. For instance, at the binding of I in (1.2), I can be ascribed the type (int ! int ) " (bool ! bool ) making the two applications of I typable. The use of intersection types replaces the binding of t... |

4 | ML under Unix
- Cardelli
- 1983
(Show Context)
Citation Context ...so depends on a particular typing of the store. To see this, consider the following example. Let s = fa 7! nilg E = fx 7! a; y 7! ag TE = fx : (int list ) ref ; y : (bool list ) ref g e = (*z:!y)(x:= =-=[7]-=-) Notice that x and y are bound to the same address. At first it might look like we have s j= E : TE -- after all, x is bound to a and s(a) has type int list 4As we are not noncerned with wrong, this ... |

1 |
Functional characterization of some semantic equalities inside *-calculus
- Cl'ement, Despeyroux, et al.
- 1985
(Show Context)
Citation Context ...at is extremely convenient for defining these polymorphic type disciplines (and others as well, I trust). It started as "Structural Operational Semantics" [34], the French call it "Natural Semantics" =-=[9]-=- -- I shall use the term "operational semantics". The idea is to borrow the concept of inference rule and proof from formal logic. The typing rules aresCHAPTER 1. INTRODUCTION 4 then expressed as type... |

1 |
Dezani-Ciancaglini an B. Venneri, Functional characters of solvable terms
- Coppo, M
- 1981
(Show Context)
Citation Context ...done effectively by a type checker [27,14]. Milner's type discipline is used in the language Standard ML. Another extension of Hindley's work is the introduction of intersection types by Coppo et al. =-=[10,11,12,38]-=-. For instance, at the binding of I in (1.2), I can be ascribed the type (int ! int ) " (bool ! bool ) making the two applications of I typable. The use of intersection types replaces the binding of t... |