CSE321 Programming Languages Simply Typed Calculus POSTECH March
- Slides: 29
CSE-321 Programming Languages Simply Typed -Calculus 박성우 POSTECH March 28, 2007
-Calculus • Abstract syntax • Operational semantics (call-by-value) 2
Simulating Base Types • Booleans • Natural numbers • Fixed point combinator 3
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! 4
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 5
Outline • Introduction V • The simply typed -calculus – Abstract syntax – Operational semantics – Type system • Type safety 6
Abstract Syntax 7
What if there is no base type? No interesting expression! 8
Outline • Introduction V • The simply typed -calculus – Abstract syntax V – Operational semantics – Type system • Type safety 9
Simply Untyped -Calculus 10
Reduction Rules for Booleans 11
Capture-Avoiding Substitutions • Completely analogous 12
Free Variables • Completely analogous 13
Outline • Introduction V • The simply typed -calculus – Abstract syntax V – Operational semantics V – Type system • Type safety 14
What is the type of Answer: ?
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! 16
Type System • Typing context • Typing judgment 17
Typing Rules --- Top-down 18
Typing Rules --- Bottom-up 19
Typing Rules for Booleans 20
Typing Derivation 21
Typing Derivation 22
Outline • Introduction V • The simply typed -calculus V – Abstract syntax V – Operational semantics V – Type system V • Type safety 23
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 • . . . 24
Assignment 3+ • Count the number of hours that you spend before getting your Matrix program to typecheck. – Example: • 0 am: You start. • 10 am: Your program compiles with no type errors. • Then count the number of extra hours that you spend before completing Assignment 3. 25
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. " 26
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] 27
Type Safety • Type preservation • Progress 28
Proof of Type Safety • Use the rule induction. • In the next lecture! 29
- Strongly typed vs weakly typed
- Difference between strongly and weakly typed languages
- Cse321
- Typed functional programming
- Poland national anthem lyrics
- Xenia programming languages
- Transmission programming languages
- Multithreading program in java
- Storage management in programming languages
- Reasons for studying concepts of programming languages
- Real time programming language
- Programming languages
- Joey paquet
- Programming languages flowchart
- Language
- Advantages and disadvantages of system software
- Programming languages levels
- Cornell programming languages
- Programming xkcd
- Programming languages
- Imperative programming languages
- Cse 340 principles of programming languages
- Real-time systems and programming languages
- Cs 421 programming languages and compilers
- Brief history of programming languages
- Mainstream programming languages
- Introduction to programming languages
- Low level linux programming
- Programming languages
- Alternative programming languages