1 / 29

CSE-321 Programming Languages Simply Typed  -Calculus

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.

onawa
Télécharger la présentation

CSE-321 Programming Languages Simply Typed  -Calculus

An Image/Link below is provided (as is) to download presentation 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. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. CSE-321 Programming LanguagesSimply 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. Motivation • 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!

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

More Related