CSE-321 Programming Languages Simply Typed -Calculus

Post on 21-Jan-2016

36 views 0 download

description

CSE-321 Programming Languages Simply Typed  -Calculus. 박성우. POSTECH March 28, 2007.  -Calculus. Abstract syntax Operational semantics (call-by-value). Simulating Base Types. Booleans Natural numbers Fixed point combinator. Motivation. The  -calculus is expressive. - PowerPoint PPT Presentation

Transcript of CSE-321 Programming Languages Simply Typed -Calculus

CSE-321 Programming Languages

Simply Typed -Calculus

POSTECH

March 28, 2007

박성우

2

-Calculus• Abstract syntax

• Operational semantics (call-by-value)

3

Simulating Base Types• Booleans

• Natural numbers

• Fixed point combinator

4

• The -calculus is expressive.– booleans, integers, lists, recursive functions, ...

• But it is highly inefficient to program in the -calculus.– Why not just use

instead of ?

• So we introduce a type system!

Motivation

5

Simply Typed -Calculus• An extension of the untyped -calculus with types

• Assumes a fixed set of base types– E.g.

• base type • primitive constructs

• A subset of Standard ML

6

Outline• Introduction V• The simply typed -calculus

– Abstract syntax– Operational semantics– Type system

• Type safety

7

Abstract Syntax

8

What if there is no base type?

No interesting expression!

9

Outline• Introduction V• The simply typed -calculus

– Abstract syntax V– Operational semantics– Type system

• Type safety

10

Simply Untyped -Calculus

11

Reduction Rules for Booleans

12

Capture-Avoiding Substitutions• Completely analogous

13

Free Variables• Completely analogous

14

Outline• Introduction V• The simply typed -calculus

– Abstract syntax V– Operational semantics V– Type system

• Type safety

What is the type of ?

Answer:

16

How to find the type of 1. Assume that the type of x is A.

• okay

2. Find the type of x.• A

3. Build a function type• A ! A

Need to make assumptions on types of variables!

17

Type System• Typing context

• Typing judgment

18

Typing Rules --- Top-down

19

Typing Rules --- Bottom-up

20

Typing Rules for Booleans

21

Typing Derivation

22

Typing Derivation

23

Outline• Introduction V• The simply typed -calculus V

– Abstract syntax V– Operational semantics V– Type system V

• Type safety

24

Unsafe Operations in C• Adding two pointers

• Subtracting an integer from a string– which is okay, but likely to be unintended

• Null-pointer dereferencing– Argh... segmentation fault!

• Using an integer as a destination address in a function call

• ...

25

Assignment 3+• Count the number of hours that you spend before

getting your Matrix program to typecheck.– Example:

• 0am: You start.• 10am: Your program compiles with no type

errors.

• Then count the number of extra hours that you spend before completing Assignment 3.

26

Type Safety• Slogan

"well-typed expressions never go wrong"

• Two theorems– Type preservation:

"A well-typed expression reduces to another expression of the same type."

– Progress:"A well-typed expression does not get stuck: either it is a value or

reduces to another expression."

27

Type Preservation + Progress• A well-typed expression e:

– If it is a value, we are finished.– If it is not,

• It reduces to another e' [Progress]• e' has the same type as e. [Type

preservation]

28

Type Safety• Type preservation

• Progress

29

Proof of Type Safety• Use the rule induction.• In the next lecture!