0% found this document useful (0 votes)
54 views6 pages

Lesson2 Lambda Calculus Basics: Outline

This document introduces the basics of lambda calculus, including its syntax, operational semantics through beta reduction, and ways of programming with it. Specifically, it covers abstraction over variables, beta reduction through substituting argument values for variables, representing data types through lambda terms, and different evaluation strategies like call by name.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
54 views6 pages

Lesson2 Lambda Calculus Basics: Outline

This document introduces the basics of lambda calculus, including its syntax, operational semantics through beta reduction, and ways of programming with it. Specifically, it covers abstraction over variables, beta reduction through substituting argument values for variables, representing data types through lambda terms, and different evaluation strategies like call by name.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 6

Lesson 2: Lambda Calculus

Lesson2
Lambda Calculus Basics
1/10/02
Chapter 5.1, 5.2

Outline
Syntax of the lambda calculus
abstraction over variables

Operational semantics
beta reduction
substitution

Programming in the lambda calculus


representation tricks

1/10/02

Lesson 2: Lambda Calculus

Lesson 2: Lambda Calculus

Basic ideas
introduce variables ranging over values
define functions by (lambda-) abstracting
over variables
apply functions to values
x+1
lx. x + 1
(lx. x + 1) 2
1/10/02

Lesson 2: Lambda Calculus

Abstract syntax
Pure lambda calculus: start with nothing
but variables.
Lambda terms
t ::=
x
lx . t
tt

1/10/02

variable
abstraction
application

Lesson 2: Lambda Calculus

Lesson 2: Lambda Calculus

Scope, free and bound occurences


lx . t

body

binder
Occurences of x in the body t are bound.
Nonbound variable occurrences are called free.
(lx . ly. zx(yx))x

1/10/02

Lesson 2: Lambda Calculus

Beta reduction
Computation in the lambda calculus takes the form of betareduction:
(lx. t1) t2 [x ! t2]t1
where [x ! t2]t1 denotes the result of substituting t2 for all
free occurrences of x in t1.
A term of the form (lx. t1) t2 is called a beta-redex (or bredex).
A (beta) normal form is a term containing no beta-redexes.

1/10/02

Lesson 2: Lambda Calculus

Lesson 2: Lambda Calculus

Beta reduction: Examples


(lx.ly.y x)(lz.u) ly.y(lz.u)
(lx. x x)(lz.u) (lz.u) (lz.u)
(ly.y a)((lx. x)(lz.(lu.u) z)) (ly.y a)(lz.(lu.u) z)
(ly.y a)((lx. x)(lz.(lu.u) z)) (ly.y a)((lx. x)(lz. z))
(ly.y a)((lx. x)(lz.(lu.u) z)) ((lx. x)(lz.(lu.u) z)) a

1/10/02

Lesson 2: Lambda Calculus

Evaluation strategies
Full beta-reduction
any beta-redex can be reduced

Normal order
reduce the leftmost-outermost redex

Call by name
reduce the leftmost-outermost redex, but not inside
abstractions
abstractions are normal forms

Call by value
reduce leftmost-outermost redex where argument is a value
no reduction inside abstractions (abstractions are values)

1/10/02

Lesson 2: Lambda Calculus

Lesson 2: Lambda Calculus

Programming in the lambda calculus


multiple parameters through currying
booleans
pairs
Church numerals and arithmetic
lists
recursion
call by name and call by value versions

1/10/02

Lesson 2: Lambda Calculus

Computation in the lambda calculus takes the form of betareduction:


(lx. t1) t2 [x ! t2]t1
where [x ! t2]t1 denotes the result of substituting t2 for all
free occurrences of x in t1.
A term of the form (lx. t1) t2 is called a beta-redex (or bredex).
A (beta) normal form is a term containing no beta-redexes.

1/10/02

Lesson 2: Lambda Calculus

10

Lesson 2: Lambda Calculus

Symbols
Symbols l b a !

1/10/02

Lesson 2: Lambda Calculus

11

You might also like