Roadmap to Atsushi Ohori’s “ A Simple Semantics for ML Polymorphism ”

16
Roadmap to Atsushi Ohori’s A Simple Semantics for ML PolymorphismBill Harrison

description

Roadmap to Atsushi Ohori’s “ A Simple Semantics for ML Polymorphism ”. Bill Harrison. ML polymorphism. Can apply polymorphic term for any type a. Know what it denotes at any instance…. …from the semantics of simply-typed - calculus. Ohori’s idea: simple semantics. - PowerPoint PPT Presentation

Transcript of Roadmap to Atsushi Ohori’s “ A Simple Semantics for ML Polymorphism ”

Page 1: Roadmap to Atsushi Ohori’s “ A Simple Semantics for ML Polymorphism ”

Roadmap to Atsushi Ohori’s“A Simple Semantics for ML Polymorphism”

Bill Harrison

Page 2: Roadmap to Atsushi Ohori’s “ A Simple Semantics for ML Polymorphism ”

ML polymorphism

Know what it denotes at any instance…

…from the semantics of simply-typed -calculus

Can apply polymorphic term for any type a

Page 3: Roadmap to Atsushi Ohori’s “ A Simple Semantics for ML Polymorphism ”

Ohori’s idea: simple semantics

…extend it to ML-like languages

Starting from the semantics of STLC:

from simply-typed -calculus semantics

Page 4: Roadmap to Atsushi Ohori’s “ A Simple Semantics for ML Polymorphism ”

Simple vs ? An alternative [DamasMilner82] is to model

type quantifiers with type abstraction as in System F [Girard,Reynolds]

However, this has drawbacks as the denotational semantics of System F is, well, hairy [GirardLafontTaylor]

Page 5: Roadmap to Atsushi Ohori’s “ A Simple Semantics for ML Polymorphism ”

Overview of Ohori’s approach

Semantics of Core-ML

Semantics ofGround Core-ML

SemanticsSimply-typed

T

…and define Core-ML in terms of T

Introduce two languages• Core-ML: polymorphic, implicitly-typed -calculus• T: simply & explicitly-typed -calculus with “textbook” denotational semantics

Page 6: Roadmap to Atsushi Ohori’s “ A Simple Semantics for ML Polymorphism ”

Today Core-ML: syntactic matters T: its syntax & semantics

In terms of frame models Relating Core-ML to T “Roadmap’’ handout contains the technical

minutiae of the paper Laid out in a more logical manner

Ohori’s paper is rich with material I won’t discuss today: Comparisons with [Milner78,DamasMilner82], full

abstraction, extensions to recursive terms & datatypes

Page 7: Roadmap to Atsushi Ohori’s “ A Simple Semantics for ML Polymorphism ”

Core-ML typesTypes & Type Schemes

Type assignments

Type assignment schemes

Substitutions

Page 8: Roadmap to Atsushi Ohori’s “ A Simple Semantics for ML Polymorphism ”

Core-ML terms

Raw terms

Typingsany ground judgment derivable in:

Core-ML terms are typing schemes

Page 9: Roadmap to Atsushi Ohori’s “ A Simple Semantics for ML Polymorphism ”

T terms

Preterms

Type system

Note the different “”

explicit

typing

Page 10: Roadmap to Atsushi Ohori’s “ A Simple Semantics for ML Polymorphism ”

Background: Frame Models

Page 11: Roadmap to Atsushi Ohori’s “ A Simple Semantics for ML Polymorphism ”

Denotational semantics of T

This is a completely conventional, “textbook” semantics

Page 12: Roadmap to Atsushi Ohori’s “ A Simple Semantics for ML Polymorphism ”

Relating Core-ML to T

Translation from Core-ML typings to T

* Consequence of Theorem 6, Section 3.2, of Ohori89

…with the following coherence property:

Page 13: Roadmap to Atsushi Ohori’s “ A Simple Semantics for ML Polymorphism ”

Just two more auxiliary definitions (I promise)

The set of admissible type assignments under is

The set of types associated with a term is:

N.b.,

E.g.,

Page 14: Roadmap to Atsushi Ohori’s “ A Simple Semantics for ML Polymorphism ”

Denotational Semantics of Core-ML

Terms:

Typings:

Page 15: Roadmap to Atsushi Ohori’s “ A Simple Semantics for ML Polymorphism ”

Relevance to Haskell98 (?!)

where

Page 16: Roadmap to Atsushi Ohori’s “ A Simple Semantics for ML Polymorphism ”

Conclusions Simple & intuitive: make a polymorphic

term denote the set of its ground instance denotations

Avoids the pitfalls of “backwards” explanations: ML polymorphism is simpler than System F, so its semantics should be simpler