Parametric Polymorphism - PowerPoint PPT Presentation

About This Presentation
Title:

Parametric Polymorphism

Description:

Value restriction only allows type-abstraction over values so with the value ... Parametricity theorems basis for formal claims of data-abstraction ... – PowerPoint PPT presentation

Number of Views:99
Avg rating:3.0/5.0
Slides: 31
Provided by: csPrin
Category:

less

Transcript and Presenter's Notes

Title: Parametric Polymorphism


1
Parametric Polymorphism
  • COS 441
  • Princeton University
  • Fall 2004

2
Polymorphic Polymorphism
  • Polymorphism has different meanings in different
    contexts.
  • Cardelli and Wegner (1985) decompose it as
    follows

3
Varieties of Polymorphism
  • Universal polymorphism is obtained when a
    function works uniformly on a range of types
  • Ad-hoc polymorphism is obtained when a function
    works, or appears to work, on several different
    types and may behave in unrelated ways for each
    type.
  • From On Understanding Types, Data Abstraction,
    and Polymorphism, Luca Cardelli and Peter Wegner
    Computing Surveys, (December, 1985)

4
Forms of Universal Polymorphism
  • parametric polymorphism (generics)
  • ML-style, based on type parameters
  • Focus of this lecture
  • inclusion polymorphism (subtyping)
  • OO-style based on subtype inclusion
  • Will study this Friday

5
Forms of Parametric Polymorphism
  • Harper distinguishes between first-class and
    second-class forms of parametric polymorphism
  • ML supports only second-class parametric
    polymorphism because of limitations in
    type-inference
  • Supporting first-class versions is easy if you
    dont care about type-inference

6
First vs Second Class
  • First-class
  • ? int ?1 ! ?2 t 8t(?)
  • Example 8t(t ! t) ! 8t(t ! t)
  • Second-class
  • ? ? 8t(?)
  • ? int ?1 ! ?2 t
  • Example 8t(8t((t ! t) ! (t ! t)))

7
Second Class Polymorphism
  • Second-class or prenex polymorphism the 8 are
    all at the front of the type
  • ? ? 8t(?) (polytypes)
  • ? int ?1 ! ?2 t (monotypes)
  • Polytypes ?, 8t(?), 8 t(8 t(?)), int
  • Monotypes t, int, t ! int,

8
PolyMinML
  • Supports second-class parametric polymorphism
  • Only instantiate polytypes with monotypes

9
Dynamic Semantics
10
Static Semantics
  • Must modify judgment forms to account for free
    type variables occurring in types during type
    checking

11
Static Semantics
  • Must modify judgment forms to account for free
    type variables occurring in types during type
    checking

Typo should be ?
12
Well-formed Type
13
Well-Formed Expressions
  • Remaining rules maintain/assume the following
    invariant

14
Example Polymorphic Compose
15
Type Soundness
  • Similar to Substitution Lemma
  • Proofs are all similar to previous proofs just
    with more tedium!

16
First-Class Polymorphism
  • Easy to obtain just relax distinction between
    polytypes and monotypes
  • Zero changes to the proof or operational
    semantics
  • Not supported for many reasons
  • Interacts badly with type-inference
  • Does not allow type-erasure in opsem

17
Effects/Erasure and Polymorphism
  • The expressions Fun and inst similar to roll and
    unroll
  • No real need on a executing machine
  • Just to make type checking and type-soundness
    easier
  • In second-order system with value restriction can
    be erased from program
  • ML compilers use type-erasure during compilation

18
Value Restriction
  • Consider v ?
  • v must be of the form
  • Fun t1 in Fun t2 in Fun tn in e
  • Value restriction only allows type-abstraction
    over values so with the value restriction we know
    that e is also a value
  • If it is a value than it is safe to remove all
    the Fun

19
Example Value Restriction
  • Consider program below
  • the program is sound because there is a unique
    reference created with each instantiation of r

20
Example Value Restriction
  • Consider erased version below
  • the program is unsound because there is just one
    reference created with each instantiation of r.
  • SML rejects the above

21
Polymorphism and Abstraction
  • Parametric polymorphism can be used to enforce
    data abstraction
  • Parametricity theorem lets us infer information
    about a value just by inspecting its type
  • Similar to a canonical forms lemmas
  • Gives us a semantic description of a value based
    on its type

22
Example 8t(t ! t)
  • Consider function f the type 8t(t ! t)
  • assuming we only care about interesting
    functions (those that terminate) how can
    functions of that type behave?
  • All functions of that type must simply return
    their argument. i.e. they all behave as the
    identity function

23
Semantics vs. Syntax
  • Note parametricity theorem states any function
    must act like the identity function it may
    look different
  • (fn x gt x)
  • (fn x gt (((fn f gt f) (fn y gt y)) x))
  • (fn x gt (12x))
  • Compare to canonical forms lemmas which states
    values must be a specific piece of syntax

24
Other Theorems
  • 8t(t)
  • No interesting values of this type
  • 8t(t list ! t list)
  • Interesting functions only examine the spine
    of the list

25
A Simple Abstraction Theorem
  • Consider N 8t(t ! (t ! t) ! t)
  • Interesting functions of this form can only apply
    their first and second arguments.
  • Fun t in fn zt is fn st! t is z
  • Fun t in fn zt is fn st! t is s(z)
  • Fun t in fn zt is fn st! t is s(s(z))

26
Formal Definition of Parametricity
  • Define a notion of equivalence of expressions
    indexed by type

27
Definition of Parametricity (cont.)
  • Define a notion of equivalence of closed values
    indexed by type

28
Definition of Parametricity (cont.)
  • Interesting case is definition of all

Almost arbitrary relation
29
Parametricity Theorems
30
Summary
  • Many different forms of polymorphism
  • Parametric polymorphism comes in both first-class
    and second-class forms
  • Parametricity theorems basis for formal claims of
    data-abstraction
Write a Comment
User Comments (0)
About PowerShow.com