Download presentation
Presentation is loading. Please wait.
Published byWillis Nichols Modified over 6 years ago
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!
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.