cse-321 programming languages polymorphism postech may 15, 2006 박성우

Post on 18-Dec-2015

213 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

CSE-321 Programming Languages

Polymorphism

POSTECH

May 15, 2006

박성우

2

Polymorphism• The same piece of code can be reused for different

types of objects– parameteric polymorphism– ad hoc polymorphism– crafty polymorphism

3

Parametric Polymorphism• Operates on all types of objects in a uniform way.

• C++ templates– The same C++ template is instantiated to

different classes.– cannot exploit specific properties of a given type.

• Java generics (J2SE 5.0)– another name for polymorphism similar to C++

templates

4

Ad hoc Polymorphism• Different behavior depending on the type of objects

it operates on

• Operator overloading• + operator in SML

- 1 + 1;val it = 2 : int- 1.0 + 1.0;val it = 2.0 : real

5

Outline• Polymorphism V• System F - syntax and reduction rules

– extension of the untyped -calculus with parametric polymorphism

• Crafty polymorphism• System F - type system

6

Type of • Two tasks:

1. bind variable x to some type

2. decide the type of the resultant expression

• Candidates (for the simply typed -calculus)

7

Idea: use "any type" • Read as "any type"

expression type

8

Ambiguity

9

How to distinguish between and ?

10

Identity Function Again

• Let's apply the identity function to true.

11

Type Application

12

System F• Impredicative Polymorphic -calculus

13

Reduction Rules for System F

14

Outline• Polymorphism V• System F - syntax and reduction rules V• Crafty polymorphism

– extremely dangerous for programming• System F - type system

15

Polymorph in Warcraft IIPolymorph

             Cost: 2000 Gold

Mana 200Range: 10

Time to Upgrade: 200 Time Units.

• Permanent effect• You may cast polymorph

on your ally units!

16

Polymorph in Warcraft III

• Temporary effect– 60 seconds

17

Polymorph in World of Warcraft?

18

Outline• Polymorphism V• System F - syntax and reduction rules V• Crafty polymorphism V• System F - type system

19

Composing Two Functions

• ! makes sense only after both and are declared.– the order of elements in a typing context matters.

20

Typing Contexts• Ordered sets

21

Valid or Invalid?

22

Typing Rules

23

Example

24

Substitution Lemmas• As usual, except:

25

Type Safety

top related