Presentation is loading. Please wait.

Presentation is loading. Please wait.

CSE-321 Programming Languages Simply Typed -Calculus

Similar presentations


Presentation on theme: "CSE-321 Programming Languages Simply Typed -Calculus"— Presentation transcript:

1 CSE-321 Programming Languages Simply Typed -Calculus
박성우 POSTECH April 3, 2006

2 -Calculus Abstract syntax Operational semantics (call-by-value)

3 Simulating Base Types Booleans Natural numbers Fixed point combinator

4 Motivation The -calculus is equally expressive as Turing machines.
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!

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

15 What is the type of ? Answer:

16 How to find the type of Assume that the type of x is A. okay
Find the type of x. A 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 Huffman Coding in SML Suppose that you spent 10 hours before getting your program to typecheck. 0am: You start. 10am: Your program compiles with no type errors. How many more hours did you spend after that?

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 is not 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!


Download ppt "CSE-321 Programming Languages Simply Typed -Calculus"

Similar presentations


Ads by Google