Loading in 5 sec....

CSE-321 Programming Languages Simply Typed -CalculusPowerPoint Presentation

CSE-321 Programming Languages Simply Typed -Calculus

Download Presentation

CSE-321 Programming Languages Simply Typed -Calculus

Loading in 2 Seconds...

- 109 Views
- Uploaded on
- Presentation posted in: General

CSE-321 Programming Languages Simply Typed -Calculus

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.

- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

CSE-321 Programming LanguagesSimply Typed -Calculus

박성우

POSTECH

March 28, 2007

- Abstract syntax
- Operational semantics (call-by-value)

- Booleans
- Natural numbers
- Fixed point combinator

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

- An extension of the untyped-calculus with types
- Assumes a fixed set of base types
- E.g.
- base type
- primitive constructs

- E.g.
- A subset of Standard ML

- Introduction V
- The simply typed -calculus
- Abstract syntax
- Operational semantics
- Type system

- Type safety

No interesting expression!

- Introduction V
- The simply typed -calculus
- Abstract syntax V
- Operational semantics
- Type system

- Type safety

- Completely analogous

- Completely analogous

- Introduction V
- The simply typed -calculus
- Abstract syntax V
- Operational semantics V
- Type system

- Type safety

What is the type of ?

Answer:

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

- Typing context
- Typing judgment

- Introduction V
- The simply typed -calculus V
- Abstract syntax V
- Operational semantics V
- Type system V

- Type safety

- 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
- ...

- 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.

- Example:
- Then count the number of extra hours that you spend before completing Assignment 3.

- 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."

- 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]

- Type preservation
- Progress

- Use the rule induction.
- In the next lecture!