Chapter 5: The Untyped Lambda Calculus

Similar documents
Chapter 5: The Untyped Lambda Calculus

Untyped Lambda Calculus

Untyped Lambda Calculus

Lambda Calculus.

11/6/17. Outline. FP Foundations, Scheme. Imperative Languages. Functional Programming. Mathematical Foundations. Mathematical Foundations

The Lambda Calculus. 27 September. Fall Software Foundations CIS 500. The lambda-calculus. Announcements

Lambda Calculus. Lecture 4 CS /26/10

CIS 500 Software Foundations Fall September 25

Type Systems Winter Semester 2006

λ calculus Function application Untyped λ-calculus - Basic Idea Terms, Variables, Syntax β reduction Advanced Formal Methods

One of a number of approaches to a mathematical challenge at the time (1930): Constructibility

Introduction to Lambda Calculus. Lecture 5 CS 565 1/24/08

Fall 2013 Midterm Exam 10/22/13. This is a closed-book, closed-notes exam. Problem Points Score. Various definitions are provided in the exam.

The Untyped Lambda Calculus

VU Semantik von Programmiersprachen

Functions as data. Massimo Merro. 9 November Massimo Merro The Lambda language 1 / 21

Lambda Calculus. Concepts in Programming Languages Recitation 6:

Costly software bugs that could have been averted with type checking

M. Snyder, George Mason University LAMBDA CALCULUS. (untyped)

Introduction to Lambda Calculus. Lecture 7 CS /08/09

The Untyped Lambda Calculus

Lambda Calculus. Type Systems, Lectures 3. Jevgeni Kabanov Tartu,

Pure Lambda Calculus. Lecture 17

Lambda Calculus. CS 550 Programming Languages Jeremy Johnson

Lambda Calculus and Type Inference

INF 212 ANALYSIS OF PROG. LANGS LAMBDA CALCULUS. Instructors: Crista Lopes Copyright Instructors.

Formal Semantics. Aspects to formalize. Lambda calculus. Approach

5. Introduction to the Lambda Calculus. Oscar Nierstrasz

Concepts of programming languages

The Untyped Lambda Calculus

Lesson 4 Typed Arithmetic Typed Lambda Calculus

Introduction to the Lambda Calculus

Resources: The slides of this lecture were derived from [Järvi], with permission of the original author, by copy & x = 1 let x = 1 in...

Constraint-based Analysis. Harry Xu CS 253/INF 212 Spring 2013

Lecture 5: The Untyped λ-calculus

CMSC 330: Organization of Programming Languages

1 Scope, Bound and Free Occurrences, Closed Terms

The Untyped Lambda Calculus

Fundamentals and lambda calculus

Formal Systems and their Applications

Lambda calculus. Wouter Swierstra and Alejandro Serrano. Advanced functional programming - Lecture 6

Lambda Calculus. Variables and Functions. cs3723 1

From the λ-calculus to Functional Programming Drew McDermott Posted

Advanced Topics in Programming Languages Lecture 3 - Models of Computation

More Untyped Lambda Calculus & Simply Typed Lambda Calculus

CSE 505: Concepts of Programming Languages

Computer Science 203 Programming Languages Fall Lecture 10. Bindings, Procedures, Functions, Functional Programming, and the Lambda Calculus

Lexicografie computationala Feb., 2012

Functional Programming and λ Calculus. Amey Karkare Dept of CSE, IIT Kanpur

Pure (Untyped) λ-calculus. Andrey Kruglyak, 2010

Fundamentals and lambda calculus. Deian Stefan (adopted from my & Edward Yang s CSE242 slides)

Programming Languages

dynamically typed dynamically scoped

COMP 1130 Lambda Calculus. based on slides by Jeff Foster, U Maryland

Last class. CS Principles of Programming Languages. Introduction. Outline

Programming Language Features. CMSC 330: Organization of Programming Languages. Turing Completeness. Turing Machine.

CMSC 330: Organization of Programming Languages

Activity. CSCI 334: Principles of Programming Languages. Lecture 4: Fundamentals II. What is computable? What is computable?

Introduction to the λ-calculus

CS 4110 Programming Languages & Logics. Lecture 17 Programming in the λ-calculus

Lambda Calculus and Extensions as Foundation of Functional Programming

CMSC 330: Organization of Programming Languages. Lambda Calculus

Harvard School of Engineering and Applied Sciences CS 152: Programming Languages. Lambda calculus

CIS 500 Software Foundations Midterm I

Lambda Calculus and Type Inference

COMP80 Lambda Calculus Programming Languages Slides Courtesy of Prof. Sam Guyer Tufts University Computer Science History Big ideas Examples:

A Quick Overview. CAS 701 Class Presentation 18 November Department of Computing & Software McMaster University. Church s Lambda Calculus

TILC: The Interactive Lambda-Calculus Tracer 1

Lambda Calculus: Implementation Techniques and a Proof. COS 441 Slides 15

CMSC 336: Type Systems for Programming Languages Lecture 4: Programming in the Lambda Calculus Acar & Ahmed 22 January 2008.

9/23/2014. Why study? Lambda calculus. Church Rosser theorem Completeness of Lambda Calculus: Turing Complete

Functional Programming

Functional Languages. Hwansoo Han

Lecture #3: Lambda Calculus. Last modified: Sat Mar 25 04:05: CS198: Extra Lecture #3 1

CMSC 330: Organization of Programming Languages

3.1 λ-calculus: Syntax

Functions. Massimo Merro. 24 October Massimo Merro Functional language 1 / 1

CMSC 330: Organization of Programming Languages. Lambda Calculus

Course Notes Equational Programming: Lambda Calculus. Femke van Raamsdonk

CMSC 336: Type Systems for Programming Languages Lecture 5: Simply Typed Lambda Calculus Acar & Ahmed January 24, 2008

CMSC330. Objects, Functional Programming, and lambda calculus

(Refer Slide Time: 4:00)

Lambda Calculus. Lambda Calculus

Urmas Tamm Tartu 2013

Functional Languages. CSE 307 Principles of Programming Languages Stony Brook University

CS152: Programming Languages. Lecture 7 Lambda Calculus. Dan Grossman Spring 2011

Functional Programming

Graphical Untyped Lambda Calculus Interactive Interpreter

An Introduction to the Lambda Calculus

Part I. Historical Origins

n λxy.x n y, [inc] [add] [mul] [exp] λn.λxy.x(nxy) λmn.m[inc]0 λmn.m([add]n)0 λmn.n([mul]m)1

Whereweare. CS-XXX: Graduate Programming Languages. Lecture 7 Lambda Calculus. Adding data structures. Data + Code. What about functions

The University of Nottingham SCHOOL OF COMPUTER SCIENCE A LEVEL 4 MODULE, SPRING SEMESTER MATHEMATICAL FOUNDATIONS OF PROGRAMMING ANSWERS

FUNKCIONÁLNÍ A LOGICKÉ PROGRAMOVÁNÍ 1. ÚVOD DO PŘEDMĚTU, LAMBDA CALCULUS

Introduction to the Lambda Calculus. Chris Lomont

Functional Languages and Higher-Order Functions

Introductory Example

Recursion. Lecture 6: More Lambda Calculus Programming. Fixed Points. Recursion

CITS3211 FUNCTIONAL PROGRAMMING

Scheme. Functional Programming. Lambda Calculus. CSC 4101: Programming Languages 1. Textbook, Sections , 13.7

Transcription:

Chapter 5: The Untyped Lambda Calculus What is lambda calculus for? Basics: syntax and operational semantics Programming in the Lambda Calculus Formalities (formal definitions)

What is Lambda calculus for? A core calculus (used by Landin) for capturing the language s essential mechanisms, with a collection of convenient derived forms whose behavior is understood by translating them into the core A formal system invented in the 1920s by Alonzo Church (1936, 1941), in which all computation is reduced to the basic operations of function definition and application.

Basics

Syntax The lambda-calculus (or -calculus) embodies this kind of function definition and application in the purest possible form.

Abstract Syntax Trees (s t) u (or simply written as s t u)

Abstract Syntax Trees x. ( y. ((x y) x)) (or simply written as x. y. x y x )

Scope An occurrence of the variable x is said to be bound when it occurs in the body t of an abstraction x.t. x is a binder whose scope is t. A binder can be renamed: e.g., x.x = y.y. An occurrence of x is free if it appears in a position where it is not bound by an enclosing abstraction on x. Exercises: Find free variable occurrences from the following terms: x y, x.x, y. x y, ( x.x) x.

Operational Semantics Beta-reduction: the only computation the term obtained by replacing all free occurrences of x in t 12 by t 2 A term of the form ( x.t12) t2 is called a redex. Examples: ( x.x) y à y ( x. x ( x.x)) (u r) à u r ( x.x)

Evaluation Strategies Full beta-reduction Any redex may be reduced at any time. Example: Let id = x.x. We can apply veta reduction to any of the following underlined redexes:

Evaluation Strategies The normal order strategy The leftmost, outmost redex is always reduced first.

Evaluation Strategies The call-by-name strategy A more restrictive normal order strategy, allowing no reduction inside abstraction.

Evaluation Strategies The call-by-value strategy only outermost redexes are reduced and where a redex is reduced only when its right-hand side has already been reduced to a value, a term that cannot be reduced any more.

Programming in the Lambda Calculus Multiple Arguments Church Booleans Pairs Church Numerals Recursion

Multiple Arguments f (x, y) = s currying f x y = s f = x. y. s

Church Booleans Boolean values can be encodes as: tru = t. f. t; fls = t. f. f; Boolean conditional and operators can be encoded as: test = l. m. n. l m n; and = b. c. b c fls;

Church Booleans An Example

Pairs Encoding An Example

Church Numerals Encoding Church numerals: Defining functions on Church numerals: scc = n. s. z. s (n s z); plus = m. n. s. z. m s (n s z); times = m. n. m (plus n) c0;

Recursion Terms with no normal form are said to diverge. omega = ( x. x x) ( x. x x); Fixed-point combinator fix = f. ( x. f ( y. x x y)) ( x. f ( y. x x y)); Note: fix f = f (fix f)

Recursion Basic Idea: A recursive definition: h = <body containing h> g = f. <body containing f> h = fix g

Recursion Example: fac = n. if eq n c0 then c1 else times n (fac (pred n) g = f. n. if eq n c0 fac = fix g then c1 else times n (f (pred n) Exercise: Check that fac c3 à c6.

Formalities (Formal Definitions) Syntax (free variables) Substitution Operational Semantics

Syntax Definition [Terms]: Let V be a countable set of variable names. The set of terms is the smallest set T such that 1. x T for every x V; 2. if t 1 T and x V, then x.t 1 T; 3. If t1 T and t 2 T, then t 1 t 2 T. Free Variables FV(x) = {v} FV( x.t 1 ) = FV(t 1 ) \ {x} FV(t 1 t 2 ) = FV(t 1 ) FV(t 2 )

Substitution Example: [x à y z] ( y. x y) = [x à y z] ( w. x w) = w. y z w

Operational Semantics

Summary What is lambda calculus for? A core calculus for capturing language essential mechanisms Simple but powerful Syntax Function definition + function application Binder, scope, free variables Operational semantics Substitution Evaluation strategies: normal order, call-by-name, callby-value

Homework Understand Chapter 5. Do exercise 5.3.6 in Chapter 5.

Answers to Students Questions Q: What is the book I mentioned about Alan Turing? A: Here is the book information. The Annotated Turing: A Guided Tour Through Alan Turing s Historic Paper on Computability and the Turing Machine Charles Petzold : Wiley; 1 (2008/6/16) :,, ISBN-10: 0470229055 ISBN-13: 978-0470229057 2008/6/16