# CSE-321 Programming Languages Simply Typed  -Calculus - PowerPoint PPT Presentation

1 / 29

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.

I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.

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

### -Calculus

• Abstract syntax

• Operational semantics (call-by-value)

### Simulating Base Types

• Booleans

• Natural numbers

• Fixed point combinator

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

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

### Outline

• Introduction V

• The simply typed -calculus

• Abstract syntax

• Operational semantics

• Type system

• Type safety

### What if there is no base type?

No interesting expression!

### Outline

• Introduction V

• The simply typed -calculus

• Abstract syntax V

• Operational semantics

• Type system

• Type safety

### Capture-Avoiding Substitutions

• Completely analogous

### Free Variables

• Completely analogous

### Outline

• Introduction V

• The simply typed -calculus

• Abstract syntax V

• Operational semantics V

• Type system

• Type safety

## What is the type of ?

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

### Type System

• Typing context

• Typing judgment

### Outline

• Introduction V

• The simply typed -calculus V

• Abstract syntax V

• Operational semantics V

• Type system V

• Type safety

### Unsafe Operations in C

• 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

• ...

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

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

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

### Type Safety

• Type preservation

• Progress

### Proof of Type Safety

• Use the rule induction.

• In the next lecture!