cse-321 programming languages subtyping postech may 14, 2007 박성우

26
CSE-321 Programming Languages Subtyping POSTECH May 14, 2007 박박박

Upload: tobias-beasley

Post on 17-Dec-2015

214 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: CSE-321 Programming Languages Subtyping POSTECH May 14, 2007 박성우

CSE-321 Programming Languages

Subtyping

POSTECH

May 14, 2007

박성우

Page 2: CSE-321 Programming Languages Subtyping POSTECH May 14, 2007 박성우

2

Key Features of Object-Oriented Languages

• Multiple representation– different methods of the same name – dynamic dispatch

• Encapsulation– Only an object's own methods can see private data.

• Inheritance– classes, subclasses, ...

• Subtyping– interface, interface extension

Page 3: CSE-321 Programming Languages Subtyping POSTECH May 14, 2007 박성우

3

Outline• Overview V• Principle of subtyping• Subtyping relations• Coercion semantics

Page 4: CSE-321 Programming Languages Subtyping POSTECH May 14, 2007 박성우

4

Principle of Subtyping

Page 5: CSE-321 Programming Languages Subtyping POSTECH May 14, 2007 박성우

5

Examples

Page 6: CSE-321 Programming Languages Subtyping POSTECH May 14, 2007 박성우

6

Basic Rules

• Reflexivity and transitivity

• Rule of subsumption

Page 7: CSE-321 Programming Languages Subtyping POSTECH May 14, 2007 박성우

7

Subset Semantics for Subtyping

• Example

– 32-bit word for nat– 32-bit word for int– 64-bit word for float

Page 8: CSE-321 Programming Languages Subtyping POSTECH May 14, 2007 박성우

8

Outline• Overview V• Principle of subtyping V• Subtyping relations• Coercion semantics

Page 9: CSE-321 Programming Languages Subtyping POSTECH May 14, 2007 박성우

9

Setup

Page 10: CSE-321 Programming Languages Subtyping POSTECH May 14, 2007 박성우

10

Subtyping for Product Types

Page 11: CSE-321 Programming Languages Subtyping POSTECH May 14, 2007 박성우

11

Subtyping for Sum Types

Page 12: CSE-321 Programming Languages Subtyping POSTECH May 14, 2007 박성우

12

Subtyping for Function Types

Page 13: CSE-321 Programming Languages Subtyping POSTECH May 14, 2007 박성우

13

Subtyping for Reference Types

Page 14: CSE-321 Programming Languages Subtyping POSTECH May 14, 2007 박성우

You are all so gullible!

Page 15: CSE-321 Programming Languages Subtyping POSTECH May 14, 2007 박성우

15

Wrong Subtyping Rules!

Page 16: CSE-321 Programming Languages Subtyping POSTECH May 14, 2007 박성우

16

Page 17: CSE-321 Programming Languages Subtyping POSTECH May 14, 2007 박성우

17

Page 18: CSE-321 Programming Languages Subtyping POSTECH May 14, 2007 박성우

18

Subtyping for Function Types

• Covariant in return types B and B'

• Contravariant in argument types A and A'

Page 19: CSE-321 Programming Languages Subtyping POSTECH May 14, 2007 박성우

19

Dereferencing ref A

Page 20: CSE-321 Programming Languages Subtyping POSTECH May 14, 2007 박성우

20

Assigning to ref A

Page 21: CSE-321 Programming Languages Subtyping POSTECH May 14, 2007 박성우

21

Subtyping for Reference Types

• A · B corresponds to dereferencing.• B · A corresponds to assigning a new value.• Nonvariant (neither covariant nor contravariant)

Page 22: CSE-321 Programming Languages Subtyping POSTECH May 14, 2007 박성우

22

Subtyping for Array Types• Array types = extension of reference types

• Subtyping for array types in Java

– runtime overhead of dynamic tag-checks.

Page 23: CSE-321 Programming Languages Subtyping POSTECH May 14, 2007 박성우

23

Outline• Overview V• Principle of subtyping V• Subtyping relations V• Coercion semantics

Page 24: CSE-321 Programming Languages Subtyping POSTECH May 14, 2007 박성우

24

Coercion Semantics for Subtyping

• Example

– 32-bit word for int– 64-bit word for float

Page 25: CSE-321 Programming Languages Subtyping POSTECH May 14, 2007 박성우

25

Coercion Subtyping Judgment

Page 26: CSE-321 Programming Languages Subtyping POSTECH May 14, 2007 박성우

26

• All coercion functions for A · B) exhibit the same behavior.

Coherence