Top Banner
61A Lecture 24 Wednesday, October 29
117

61A Lecture 24 - University of California, Berkeleycs61a/fa14/assets/slides/24-Scheme... · Scheme is a Dialect of Lisp What are people saying about Lisp? •"The greatest single

Apr 08, 2018

Download

Documents

vannhan
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: 61A Lecture 24 - University of California, Berkeleycs61a/fa14/assets/slides/24-Scheme... · Scheme is a Dialect of Lisp What are people saying about Lisp? •"The greatest single

61A Lecture 24

Wednesday, October 29

Page 2: 61A Lecture 24 - University of California, Berkeleycs61a/fa14/assets/slides/24-Scheme... · Scheme is a Dialect of Lisp What are people saying about Lisp? •"The greatest single

Announcements

2

Page 3: 61A Lecture 24 - University of California, Berkeleycs61a/fa14/assets/slides/24-Scheme... · Scheme is a Dialect of Lisp What are people saying about Lisp? •"The greatest single

Announcements

• Homework 7 due Wednesday 11/5 @ 11:59pm

2

Page 4: 61A Lecture 24 - University of California, Berkeleycs61a/fa14/assets/slides/24-Scheme... · Scheme is a Dialect of Lisp What are people saying about Lisp? •"The greatest single

Announcements

• Homework 7 due Wednesday 11/5 @ 11:59pm

• Project 1 composition revisions due Wednesday 11/5 @ 11:59pm

2

Page 5: 61A Lecture 24 - University of California, Berkeleycs61a/fa14/assets/slides/24-Scheme... · Scheme is a Dialect of Lisp What are people saying about Lisp? •"The greatest single

Announcements

• Homework 7 due Wednesday 11/5 @ 11:59pm

• Project 1 composition revisions due Wednesday 11/5 @ 11:59pm

!Make changes to your project based on the composition feedback you received

2

Page 6: 61A Lecture 24 - University of California, Berkeleycs61a/fa14/assets/slides/24-Scheme... · Scheme is a Dialect of Lisp What are people saying about Lisp? •"The greatest single

Announcements

• Homework 7 due Wednesday 11/5 @ 11:59pm

• Project 1 composition revisions due Wednesday 11/5 @ 11:59pm

!Make changes to your project based on the composition feedback you received!Earn back any points you lost on project 1 composition

2

Page 7: 61A Lecture 24 - University of California, Berkeleycs61a/fa14/assets/slides/24-Scheme... · Scheme is a Dialect of Lisp What are people saying about Lisp? •"The greatest single

Announcements

• Homework 7 due Wednesday 11/5 @ 11:59pm

• Project 1 composition revisions due Wednesday 11/5 @ 11:59pm

!Make changes to your project based on the composition feedback you received!Earn back any points you lost on project 1 composition!Composition of other projects is delayed, as we transition to new grading software

2

Page 8: 61A Lecture 24 - University of California, Berkeleycs61a/fa14/assets/slides/24-Scheme... · Scheme is a Dialect of Lisp What are people saying about Lisp? •"The greatest single

Announcements

• Homework 7 due Wednesday 11/5 @ 11:59pm

• Project 1 composition revisions due Wednesday 11/5 @ 11:59pm

!Make changes to your project based on the composition feedback you received!Earn back any points you lost on project 1 composition!Composition of other projects is delayed, as we transition to new grading software

• Quiz 2 released Wednesday 11/5 & due Thursday 11/6 @ 11:59pm

2

Page 9: 61A Lecture 24 - University of California, Berkeleycs61a/fa14/assets/slides/24-Scheme... · Scheme is a Dialect of Lisp What are people saying about Lisp? •"The greatest single

Announcements

• Homework 7 due Wednesday 11/5 @ 11:59pm

• Project 1 composition revisions due Wednesday 11/5 @ 11:59pm

!Make changes to your project based on the composition feedback you received!Earn back any points you lost on project 1 composition!Composition of other projects is delayed, as we transition to new grading software

• Quiz 2 released Wednesday 11/5 & due Thursday 11/6 @ 11:59pm

!Open note, open interpreter, closed classmates, closed Internet

2

Page 10: 61A Lecture 24 - University of California, Berkeleycs61a/fa14/assets/slides/24-Scheme... · Scheme is a Dialect of Lisp What are people saying about Lisp? •"The greatest single

Announcements

• Homework 7 due Wednesday 11/5 @ 11:59pm

• Project 1 composition revisions due Wednesday 11/5 @ 11:59pm

!Make changes to your project based on the composition feedback you received!Earn back any points you lost on project 1 composition!Composition of other projects is delayed, as we transition to new grading software

• Quiz 2 released Wednesday 11/5 & due Thursday 11/6 @ 11:59pm

!Open note, open interpreter, closed classmates, closed Internet

• CS 61A flash mob Wednesday 3:03pm-3:09pm in Memorial Glade

2

Page 11: 61A Lecture 24 - University of California, Berkeleycs61a/fa14/assets/slides/24-Scheme... · Scheme is a Dialect of Lisp What are people saying about Lisp? •"The greatest single

Scheme

Page 12: 61A Lecture 24 - University of California, Berkeleycs61a/fa14/assets/slides/24-Scheme... · Scheme is a Dialect of Lisp What are people saying about Lisp? •"The greatest single

Scheme is a Dialect of Lisp

4

Page 13: 61A Lecture 24 - University of California, Berkeleycs61a/fa14/assets/slides/24-Scheme... · Scheme is a Dialect of Lisp What are people saying about Lisp? •"The greatest single

Scheme is a Dialect of Lisp

What are people saying about Lisp?

4

Page 14: 61A Lecture 24 - University of California, Berkeleycs61a/fa14/assets/slides/24-Scheme... · Scheme is a Dialect of Lisp What are people saying about Lisp? •"The greatest single

Scheme is a Dialect of Lisp

What are people saying about Lisp?

• "The greatest single programming language ever designed." -Alan Kay, co-inventor of Smalltalk and OOP

4

Page 15: 61A Lecture 24 - University of California, Berkeleycs61a/fa14/assets/slides/24-Scheme... · Scheme is a Dialect of Lisp What are people saying about Lisp? •"The greatest single

Scheme is a Dialect of Lisp

What are people saying about Lisp?

• "The greatest single programming language ever designed." -Alan Kay, co-inventor of Smalltalk and OOP

• "The only computer language that is beautiful." -Neal Stephenson, DeNero's favorite sci-fi author

4

Page 16: 61A Lecture 24 - University of California, Berkeleycs61a/fa14/assets/slides/24-Scheme... · Scheme is a Dialect of Lisp What are people saying about Lisp? •"The greatest single

Scheme is a Dialect of Lisp

What are people saying about Lisp?

• "The greatest single programming language ever designed." -Alan Kay, co-inventor of Smalltalk and OOP

• "The only computer language that is beautiful." -Neal Stephenson, DeNero's favorite sci-fi author

• "God's programming language." -Brian Harvey, Berkeley CS instructor extraordinaire

4

Page 17: 61A Lecture 24 - University of California, Berkeleycs61a/fa14/assets/slides/24-Scheme... · Scheme is a Dialect of Lisp What are people saying about Lisp? •"The greatest single

http://imgs.xkcd.com/comics/lisp_cycles.png

Scheme is a Dialect of Lisp

What are people saying about Lisp?

• "The greatest single programming language ever designed." -Alan Kay, co-inventor of Smalltalk and OOP

• "The only computer language that is beautiful." -Neal Stephenson, DeNero's favorite sci-fi author

• "God's programming language." -Brian Harvey, Berkeley CS instructor extraordinaire

4

Page 18: 61A Lecture 24 - University of California, Berkeleycs61a/fa14/assets/slides/24-Scheme... · Scheme is a Dialect of Lisp What are people saying about Lisp? •"The greatest single

Scheme Fundamentals

5

Page 19: 61A Lecture 24 - University of California, Berkeleycs61a/fa14/assets/slides/24-Scheme... · Scheme is a Dialect of Lisp What are people saying about Lisp? •"The greatest single

Scheme Fundamentals

Scheme programs consist of expressions, which can be:

5

Page 20: 61A Lecture 24 - University of California, Berkeleycs61a/fa14/assets/slides/24-Scheme... · Scheme is a Dialect of Lisp What are people saying about Lisp? •"The greatest single

Scheme Fundamentals

Scheme programs consist of expressions, which can be:

•Primitive expressions: 2, 3.3, true, +, quotient, ...

5

Page 21: 61A Lecture 24 - University of California, Berkeleycs61a/fa14/assets/slides/24-Scheme... · Scheme is a Dialect of Lisp What are people saying about Lisp? •"The greatest single

Scheme Fundamentals

Scheme programs consist of expressions, which can be:

•Primitive expressions: 2, 3.3, true, +, quotient, ...•Combinations: (quotient 10 2), (not true), ...

5

Page 22: 61A Lecture 24 - University of California, Berkeleycs61a/fa14/assets/slides/24-Scheme... · Scheme is a Dialect of Lisp What are people saying about Lisp? •"The greatest single

Scheme Fundamentals

Scheme programs consist of expressions, which can be:

•Primitive expressions: 2, 3.3, true, +, quotient, ...•Combinations: (quotient 10 2), (not true), ...

Numbers are self-evaluating; symbols are bound to values

5

Page 23: 61A Lecture 24 - University of California, Berkeleycs61a/fa14/assets/slides/24-Scheme... · Scheme is a Dialect of Lisp What are people saying about Lisp? •"The greatest single

Scheme Fundamentals

Scheme programs consist of expressions, which can be:

•Primitive expressions: 2, 3.3, true, +, quotient, ...•Combinations: (quotient 10 2), (not true), ...

Numbers are self-evaluating; symbols are bound to values

Call expressions include an operator and 0 or more operands in parentheses

5

Page 24: 61A Lecture 24 - University of California, Berkeleycs61a/fa14/assets/slides/24-Scheme... · Scheme is a Dialect of Lisp What are people saying about Lisp? •"The greatest single

Scheme Fundamentals

Scheme programs consist of expressions, which can be:

•Primitive expressions: 2, 3.3, true, +, quotient, ...•Combinations: (quotient 10 2), (not true), ...

Numbers are self-evaluating; symbols are bound to values

Call expressions include an operator and 0 or more operands in parentheses

5

> (quotient 10 2)5

Page 25: 61A Lecture 24 - University of California, Berkeleycs61a/fa14/assets/slides/24-Scheme... · Scheme is a Dialect of Lisp What are people saying about Lisp? •"The greatest single

Scheme Fundamentals

Scheme programs consist of expressions, which can be:

•Primitive expressions: 2, 3.3, true, +, quotient, ...•Combinations: (quotient 10 2), (not true), ...

Numbers are self-evaluating; symbols are bound to values

Call expressions include an operator and 0 or more operands in parentheses

5

> (quotient 10 2)5

“quotient” names Scheme’s built-in integer division procedure (i.e., function)

Page 26: 61A Lecture 24 - University of California, Berkeleycs61a/fa14/assets/slides/24-Scheme... · Scheme is a Dialect of Lisp What are people saying about Lisp? •"The greatest single

Scheme Fundamentals

Scheme programs consist of expressions, which can be:

•Primitive expressions: 2, 3.3, true, +, quotient, ...•Combinations: (quotient 10 2), (not true), ...

Numbers are self-evaluating; symbols are bound to values

Call expressions include an operator and 0 or more operands in parentheses

5

> (quotient 10 2)5> (quotient (+ 8 7) 5)3

“quotient” names Scheme’s built-in integer division procedure (i.e., function)

Page 27: 61A Lecture 24 - University of California, Berkeleycs61a/fa14/assets/slides/24-Scheme... · Scheme is a Dialect of Lisp What are people saying about Lisp? •"The greatest single

Scheme Fundamentals

Scheme programs consist of expressions, which can be:

•Primitive expressions: 2, 3.3, true, +, quotient, ...•Combinations: (quotient 10 2), (not true), ...

Numbers are self-evaluating; symbols are bound to values

Call expressions include an operator and 0 or more operands in parentheses

5

> (quotient 10 2)5> (quotient (+ 8 7) 5)3> (+ (* 3 (+ (* 2 4) (+ 3 5))) (+ (- 10 7) 6))

“quotient” names Scheme’s built-in integer division procedure (i.e., function)

Page 28: 61A Lecture 24 - University of California, Berkeleycs61a/fa14/assets/slides/24-Scheme... · Scheme is a Dialect of Lisp What are people saying about Lisp? •"The greatest single

Scheme Fundamentals

Scheme programs consist of expressions, which can be:

•Primitive expressions: 2, 3.3, true, +, quotient, ...•Combinations: (quotient 10 2), (not true), ...

Numbers are self-evaluating; symbols are bound to values

Call expressions include an operator and 0 or more operands in parentheses

5

> (quotient 10 2)5> (quotient (+ 8 7) 5)3> (+ (* 3 (+ (* 2 4) (+ 3 5))) (+ (- 10 7) 6))

“quotient” names Scheme’s built-in integer division procedure (i.e., function)

Combinations can span multiple lines

(spacing doesn’t matter)

Page 29: 61A Lecture 24 - University of California, Berkeleycs61a/fa14/assets/slides/24-Scheme... · Scheme is a Dialect of Lisp What are people saying about Lisp? •"The greatest single

Scheme Fundamentals

Scheme programs consist of expressions, which can be:

•Primitive expressions: 2, 3.3, true, +, quotient, ...•Combinations: (quotient 10 2), (not true), ...

Numbers are self-evaluating; symbols are bound to values

Call expressions include an operator and 0 or more operands in parentheses

5

> (quotient 10 2)5> (quotient (+ 8 7) 5)3> (+ (* 3 (+ (* 2 4) (+ 3 5))) (+ (- 10 7) 6))

“quotient” names Scheme’s built-in integer division procedure (i.e., function)

Combinations can span multiple lines

(spacing doesn’t matter)

Page 30: 61A Lecture 24 - University of California, Berkeleycs61a/fa14/assets/slides/24-Scheme... · Scheme is a Dialect of Lisp What are people saying about Lisp? •"The greatest single

Scheme Fundamentals

Scheme programs consist of expressions, which can be:

•Primitive expressions: 2, 3.3, true, +, quotient, ...•Combinations: (quotient 10 2), (not true), ...

Numbers are self-evaluating; symbols are bound to values

Call expressions include an operator and 0 or more operands in parentheses

5

> (quotient 10 2)5> (quotient (+ 8 7) 5)3> (+ (* 3 (+ (* 2 4) (+ 3 5))) (+ (- 10 7) 6))

“quotient” names Scheme’s built-in integer division procedure (i.e., function)

Combinations can span multiple lines

(spacing doesn’t matter)

Page 31: 61A Lecture 24 - University of California, Berkeleycs61a/fa14/assets/slides/24-Scheme... · Scheme is a Dialect of Lisp What are people saying about Lisp? •"The greatest single

Scheme Fundamentals

Scheme programs consist of expressions, which can be:

•Primitive expressions: 2, 3.3, true, +, quotient, ...•Combinations: (quotient 10 2), (not true), ...

Numbers are self-evaluating; symbols are bound to values

Call expressions include an operator and 0 or more operands in parentheses

5

> (quotient 10 2)5> (quotient (+ 8 7) 5)3> (+ (* 3 (+ (* 2 4) (+ 3 5))) (+ (- 10 7) 6))

“quotient” names Scheme’s built-in integer division procedure (i.e., function)

Combinations can span multiple lines

(spacing doesn’t matter)

Page 32: 61A Lecture 24 - University of California, Berkeleycs61a/fa14/assets/slides/24-Scheme... · Scheme is a Dialect of Lisp What are people saying about Lisp? •"The greatest single

Scheme Fundamentals

Scheme programs consist of expressions, which can be:

•Primitive expressions: 2, 3.3, true, +, quotient, ...•Combinations: (quotient 10 2), (not true), ...

Numbers are self-evaluating; symbols are bound to values

Call expressions include an operator and 0 or more operands in parentheses

5

> (quotient 10 2)5> (quotient (+ 8 7) 5)3> (+ (* 3 (+ (* 2 4) (+ 3 5))) (+ (- 10 7) 6))

“quotient” names Scheme’s built-in integer division procedure (i.e., function)

Combinations can span multiple lines

(spacing doesn’t matter)

Page 33: 61A Lecture 24 - University of California, Berkeleycs61a/fa14/assets/slides/24-Scheme... · Scheme is a Dialect of Lisp What are people saying about Lisp? •"The greatest single

Scheme Fundamentals

Scheme programs consist of expressions, which can be:

•Primitive expressions: 2, 3.3, true, +, quotient, ...•Combinations: (quotient 10 2), (not true), ...

Numbers are self-evaluating; symbols are bound to values

Call expressions include an operator and 0 or more operands in parentheses

(Demo)

5

> (quotient 10 2)5> (quotient (+ 8 7) 5)3> (+ (* 3 (+ (* 2 4) (+ 3 5))) (+ (- 10 7) 6))

“quotient” names Scheme’s built-in integer division procedure (i.e., function)

Combinations can span multiple lines

(spacing doesn’t matter)

Page 34: 61A Lecture 24 - University of California, Berkeleycs61a/fa14/assets/slides/24-Scheme... · Scheme is a Dialect of Lisp What are people saying about Lisp? •"The greatest single

Special Forms

Page 35: 61A Lecture 24 - University of California, Berkeleycs61a/fa14/assets/slides/24-Scheme... · Scheme is a Dialect of Lisp What are people saying about Lisp? •"The greatest single

Special Forms

7

Page 36: 61A Lecture 24 - University of California, Berkeleycs61a/fa14/assets/slides/24-Scheme... · Scheme is a Dialect of Lisp What are people saying about Lisp? •"The greatest single

Special Forms

A combination that is not a call expression is a special form:

7

Page 37: 61A Lecture 24 - University of California, Berkeleycs61a/fa14/assets/slides/24-Scheme... · Scheme is a Dialect of Lisp What are people saying about Lisp? •"The greatest single

Special Forms

A combination that is not a call expression is a special form:

• if expression: (if <predicate> <consequent> <alternative>)

7

Page 38: 61A Lecture 24 - University of California, Berkeleycs61a/fa14/assets/slides/24-Scheme... · Scheme is a Dialect of Lisp What are people saying about Lisp? •"The greatest single

Special Forms

A combination that is not a call expression is a special form:

• if expression: (if <predicate> <consequent> <alternative>)

7

Evaluation: (1) Evaluate the

predicate expression (2) Evaluate either the consequent or

alternative

Page 39: 61A Lecture 24 - University of California, Berkeleycs61a/fa14/assets/slides/24-Scheme... · Scheme is a Dialect of Lisp What are people saying about Lisp? •"The greatest single

Special Forms

A combination that is not a call expression is a special form:

• if expression: (if <predicate> <consequent> <alternative>)

• and and or: (and <e1> ... <en>), (or <e1> ... <en>)

7

Evaluation: (1) Evaluate the

predicate expression (2) Evaluate either the consequent or

alternative

Page 40: 61A Lecture 24 - University of California, Berkeleycs61a/fa14/assets/slides/24-Scheme... · Scheme is a Dialect of Lisp What are people saying about Lisp? •"The greatest single

Special Forms

A combination that is not a call expression is a special form:

• if expression: (if <predicate> <consequent> <alternative>)

• and and or: (and <e1> ... <en>), (or <e1> ... <en>)

• Binding symbols: (define <symbol> <expression>)

7

Evaluation: (1) Evaluate the

predicate expression (2) Evaluate either the consequent or

alternative

Page 41: 61A Lecture 24 - University of California, Berkeleycs61a/fa14/assets/slides/24-Scheme... · Scheme is a Dialect of Lisp What are people saying about Lisp? •"The greatest single

Special Forms

A combination that is not a call expression is a special form:

• if expression: (if <predicate> <consequent> <alternative>)

• and and or: (and <e1> ... <en>), (or <e1> ... <en>)

• Binding symbols: (define <symbol> <expression>)

> (define pi 3.14) > (* pi 2) 6.28

7

Evaluation: (1) Evaluate the

predicate expression (2) Evaluate either the consequent or

alternative

Page 42: 61A Lecture 24 - University of California, Berkeleycs61a/fa14/assets/slides/24-Scheme... · Scheme is a Dialect of Lisp What are people saying about Lisp? •"The greatest single

Special Forms

A combination that is not a call expression is a special form:

• if expression: (if <predicate> <consequent> <alternative>)

• and and or: (and <e1> ... <en>), (or <e1> ... <en>)

• Binding symbols: (define <symbol> <expression>)

> (define pi 3.14) > (* pi 2) 6.28

The symbol “pi” is bound to 3.14 in the global frame

7

Evaluation: (1) Evaluate the

predicate expression (2) Evaluate either the consequent or

alternative

Page 43: 61A Lecture 24 - University of California, Berkeleycs61a/fa14/assets/slides/24-Scheme... · Scheme is a Dialect of Lisp What are people saying about Lisp? •"The greatest single

Special Forms

A combination that is not a call expression is a special form:

• if expression: (if <predicate> <consequent> <alternative>)

• and and or: (and <e1> ... <en>), (or <e1> ... <en>)

• Binding symbols: (define <symbol> <expression>)

• New procedures: (define (<symbol> <formal parameters>) <body>)

> (define pi 3.14) > (* pi 2) 6.28

The symbol “pi” is bound to 3.14 in the global frame

7

Evaluation: (1) Evaluate the

predicate expression (2) Evaluate either the consequent or

alternative

Page 44: 61A Lecture 24 - University of California, Berkeleycs61a/fa14/assets/slides/24-Scheme... · Scheme is a Dialect of Lisp What are people saying about Lisp? •"The greatest single

Special Forms

A combination that is not a call expression is a special form:

• if expression: (if <predicate> <consequent> <alternative>)

• and and or: (and <e1> ... <en>), (or <e1> ... <en>)

• Binding symbols: (define <symbol> <expression>)

• New procedures: (define (<symbol> <formal parameters>) <body>)

> (define pi 3.14) > (* pi 2) 6.28

> (define (abs x) (if (< x 0) (- x) x)) > (abs -3) 3

The symbol “pi” is bound to 3.14 in the global frame

7

Evaluation: (1) Evaluate the

predicate expression (2) Evaluate either the consequent or

alternative

Page 45: 61A Lecture 24 - University of California, Berkeleycs61a/fa14/assets/slides/24-Scheme... · Scheme is a Dialect of Lisp What are people saying about Lisp? •"The greatest single

Special Forms

A combination that is not a call expression is a special form:

• if expression: (if <predicate> <consequent> <alternative>)

• and and or: (and <e1> ... <en>), (or <e1> ... <en>)

• Binding symbols: (define <symbol> <expression>)

• New procedures: (define (<symbol> <formal parameters>) <body>)

> (define pi 3.14) > (* pi 2) 6.28

> (define (abs x) (if (< x 0) (- x) x)) > (abs -3) 3

The symbol “pi” is bound to 3.14 in the global frame

A procedure is created and bound to the symbol “abs”

7

Evaluation: (1) Evaluate the

predicate expression (2) Evaluate either the consequent or

alternative

Page 46: 61A Lecture 24 - University of California, Berkeleycs61a/fa14/assets/slides/24-Scheme... · Scheme is a Dialect of Lisp What are people saying about Lisp? •"The greatest single

Special Forms

A combination that is not a call expression is a special form:

• if expression: (if <predicate> <consequent> <alternative>)

• and and or: (and <e1> ... <en>), (or <e1> ... <en>)

• Binding symbols: (define <symbol> <expression>)

• New procedures: (define (<symbol> <formal parameters>) <body>)

> (define pi 3.14) > (* pi 2) 6.28

> (define (abs x) (if (< x 0) (- x) x)) > (abs -3) 3

The symbol “pi” is bound to 3.14 in the global frame

A procedure is created and bound to the symbol “abs”

7

Evaluation: (1) Evaluate the

predicate expression (2) Evaluate either the consequent or

alternative

Page 47: 61A Lecture 24 - University of California, Berkeleycs61a/fa14/assets/slides/24-Scheme... · Scheme is a Dialect of Lisp What are people saying about Lisp? •"The greatest single

Special Forms

A combination that is not a call expression is a special form:

• if expression: (if <predicate> <consequent> <alternative>)

• and and or: (and <e1> ... <en>), (or <e1> ... <en>)

• Binding symbols: (define <symbol> <expression>)

• New procedures: (define (<symbol> <formal parameters>) <body>)

> (define pi 3.14) > (* pi 2) 6.28

> (define (abs x) (if (< x 0) (- x) x)) > (abs -3) 3

The symbol “pi” is bound to 3.14 in the global frame

A procedure is created and bound to the symbol “abs”

7

Evaluation: (1) Evaluate the

predicate expression (2) Evaluate either the consequent or

alternative

(Demo)

Page 48: 61A Lecture 24 - University of California, Berkeleycs61a/fa14/assets/slides/24-Scheme... · Scheme is a Dialect of Lisp What are people saying about Lisp? •"The greatest single

Scheme Interpreters

(Demo)

Page 49: 61A Lecture 24 - University of California, Berkeleycs61a/fa14/assets/slides/24-Scheme... · Scheme is a Dialect of Lisp What are people saying about Lisp? •"The greatest single

Lambda Expressions

Page 50: 61A Lecture 24 - University of California, Berkeleycs61a/fa14/assets/slides/24-Scheme... · Scheme is a Dialect of Lisp What are people saying about Lisp? •"The greatest single

Lambda Expressions

Lambda expressions evaluate to anonymous procedures

10

Page 51: 61A Lecture 24 - University of California, Berkeleycs61a/fa14/assets/slides/24-Scheme... · Scheme is a Dialect of Lisp What are people saying about Lisp? •"The greatest single

Lambda Expressions

Lambda expressions evaluate to anonymous procedures

(lambda (<formal-parameters>) <body>)

10

Page 52: 61A Lecture 24 - University of California, Berkeleycs61a/fa14/assets/slides/24-Scheme... · Scheme is a Dialect of Lisp What are people saying about Lisp? •"The greatest single

Lambda Expressions

Lambda expressions evaluate to anonymous procedures

λ (lambda (<formal-parameters>) <body>)

10

Page 53: 61A Lecture 24 - University of California, Berkeleycs61a/fa14/assets/slides/24-Scheme... · Scheme is a Dialect of Lisp What are people saying about Lisp? •"The greatest single

Lambda Expressions

Lambda expressions evaluate to anonymous procedures

λ (lambda (<formal-parameters>) <body>)

Two equivalent expressions:

(define (plus4 x) (+ x 4))

(define plus4 (lambda (x) (+ x 4)))

10

Page 54: 61A Lecture 24 - University of California, Berkeleycs61a/fa14/assets/slides/24-Scheme... · Scheme is a Dialect of Lisp What are people saying about Lisp? •"The greatest single

Lambda Expressions

Lambda expressions evaluate to anonymous procedures

λ (lambda (<formal-parameters>) <body>)

Two equivalent expressions:

(define (plus4 x) (+ x 4))

(define plus4 (lambda (x) (+ x 4)))

An operator can be a call expression too:

10

Page 55: 61A Lecture 24 - University of California, Berkeleycs61a/fa14/assets/slides/24-Scheme... · Scheme is a Dialect of Lisp What are people saying about Lisp? •"The greatest single

Lambda Expressions

Lambda expressions evaluate to anonymous procedures

λ (lambda (<formal-parameters>) <body>)

Two equivalent expressions:

(define (plus4 x) (+ x 4))

(define plus4 (lambda (x) (+ x 4)))

An operator can be a call expression too:

((lambda (x y z) (+ x y (square z))) 1 2 3)

10

Page 56: 61A Lecture 24 - University of California, Berkeleycs61a/fa14/assets/slides/24-Scheme... · Scheme is a Dialect of Lisp What are people saying about Lisp? •"The greatest single

Lambda Expressions

Lambda expressions evaluate to anonymous procedures

λ (lambda (<formal-parameters>) <body>)

Two equivalent expressions:

(define (plus4 x) (+ x 4))

(define plus4 (lambda (x) (+ x 4)))

An operator can be a call expression too:

((lambda (x y z) (+ x y (square z))) 1 2 3)

Evaluates to the x+y+z2 procedure

10

Page 57: 61A Lecture 24 - University of California, Berkeleycs61a/fa14/assets/slides/24-Scheme... · Scheme is a Dialect of Lisp What are people saying about Lisp? •"The greatest single

Lambda Expressions

Lambda expressions evaluate to anonymous procedures

λ (lambda (<formal-parameters>) <body>)

Two equivalent expressions:

(define (plus4 x) (+ x 4))

(define plus4 (lambda (x) (+ x 4)))

An operator can be a call expression too:

((lambda (x y z) (+ x y (square z))) 1 2 3)

Evaluates to the x+y+z2 procedure

10

12

Page 58: 61A Lecture 24 - University of California, Berkeleycs61a/fa14/assets/slides/24-Scheme... · Scheme is a Dialect of Lisp What are people saying about Lisp? •"The greatest single

Pairs and Lists

Page 59: 61A Lecture 24 - University of California, Berkeleycs61a/fa14/assets/slides/24-Scheme... · Scheme is a Dialect of Lisp What are people saying about Lisp? •"The greatest single

Pairs and Lists

12

Page 60: 61A Lecture 24 - University of California, Berkeleycs61a/fa14/assets/slides/24-Scheme... · Scheme is a Dialect of Lisp What are people saying about Lisp? •"The greatest single

Pairs and ListsIn the late 1950s, computer scientists used confusing names

12

Page 61: 61A Lecture 24 - University of California, Berkeleycs61a/fa14/assets/slides/24-Scheme... · Scheme is a Dialect of Lisp What are people saying about Lisp? •"The greatest single

Pairs and ListsIn the late 1950s, computer scientists used confusing names• cons: Two-argument procedure that creates a pair

12

Page 62: 61A Lecture 24 - University of California, Berkeleycs61a/fa14/assets/slides/24-Scheme... · Scheme is a Dialect of Lisp What are people saying about Lisp? •"The greatest single

Pairs and ListsIn the late 1950s, computer scientists used confusing names• cons: Two-argument procedure that creates a pair• car: Procedure that returns the first element of a pair

12

Page 63: 61A Lecture 24 - University of California, Berkeleycs61a/fa14/assets/slides/24-Scheme... · Scheme is a Dialect of Lisp What are people saying about Lisp? •"The greatest single

Pairs and ListsIn the late 1950s, computer scientists used confusing names• cons: Two-argument procedure that creates a pair• car: Procedure that returns the first element of a pair• cdr: Procedure that returns the second element of a pair

12

Page 64: 61A Lecture 24 - University of California, Berkeleycs61a/fa14/assets/slides/24-Scheme... · Scheme is a Dialect of Lisp What are people saying about Lisp? •"The greatest single

Pairs and ListsIn the late 1950s, computer scientists used confusing names• cons: Two-argument procedure that creates a pair• car: Procedure that returns the first element of a pair• cdr: Procedure that returns the second element of a pair• nil: The empty list

12

Page 65: 61A Lecture 24 - University of California, Berkeleycs61a/fa14/assets/slides/24-Scheme... · Scheme is a Dialect of Lisp What are people saying about Lisp? •"The greatest single

Pairs and ListsIn the late 1950s, computer scientists used confusing names• cons: Two-argument procedure that creates a pair• car: Procedure that returns the first element of a pair• cdr: Procedure that returns the second element of a pair• nil: The empty list

They also used a non-obvious notation for linked lists

12

Page 66: 61A Lecture 24 - University of California, Berkeleycs61a/fa14/assets/slides/24-Scheme... · Scheme is a Dialect of Lisp What are people saying about Lisp? •"The greatest single

Pairs and ListsIn the late 1950s, computer scientists used confusing names• cons: Two-argument procedure that creates a pair• car: Procedure that returns the first element of a pair• cdr: Procedure that returns the second element of a pair• nil: The empty list

They also used a non-obvious notation for linked lists• A (linked) list in Scheme is a pair in which the second element is nil or a Scheme list.

12

Page 67: 61A Lecture 24 - University of California, Berkeleycs61a/fa14/assets/slides/24-Scheme... · Scheme is a Dialect of Lisp What are people saying about Lisp? •"The greatest single

Pairs and ListsIn the late 1950s, computer scientists used confusing names• cons: Two-argument procedure that creates a pair• car: Procedure that returns the first element of a pair• cdr: Procedure that returns the second element of a pair• nil: The empty list

They also used a non-obvious notation for linked lists• A (linked) list in Scheme is a pair in which the second element is nil or a Scheme list.• Important! Scheme lists are written in parentheses separated by spaces

12

Page 68: 61A Lecture 24 - University of California, Berkeleycs61a/fa14/assets/slides/24-Scheme... · Scheme is a Dialect of Lisp What are people saying about Lisp? •"The greatest single

Pairs and ListsIn the late 1950s, computer scientists used confusing names• cons: Two-argument procedure that creates a pair• car: Procedure that returns the first element of a pair• cdr: Procedure that returns the second element of a pair• nil: The empty list

They also used a non-obvious notation for linked lists• A (linked) list in Scheme is a pair in which the second element is nil or a Scheme list.• Important! Scheme lists are written in parentheses separated by spaces• A dotted list has any value for the second element of the last pair; maybe not a list!

12

Page 69: 61A Lecture 24 - University of California, Berkeleycs61a/fa14/assets/slides/24-Scheme... · Scheme is a Dialect of Lisp What are people saying about Lisp? •"The greatest single

Pairs and ListsIn the late 1950s, computer scientists used confusing names• cons: Two-argument procedure that creates a pair• car: Procedure that returns the first element of a pair• cdr: Procedure that returns the second element of a pair• nil: The empty list

They also used a non-obvious notation for linked lists• A (linked) list in Scheme is a pair in which the second element is nil or a Scheme list.• Important! Scheme lists are written in parentheses separated by spaces• A dotted list has any value for the second element of the last pair; maybe not a list!

> (define x (cons 1 2))

12

Page 70: 61A Lecture 24 - University of California, Berkeleycs61a/fa14/assets/slides/24-Scheme... · Scheme is a Dialect of Lisp What are people saying about Lisp? •"The greatest single

Pairs and ListsIn the late 1950s, computer scientists used confusing names• cons: Two-argument procedure that creates a pair• car: Procedure that returns the first element of a pair• cdr: Procedure that returns the second element of a pair• nil: The empty list

They also used a non-obvious notation for linked lists• A (linked) list in Scheme is a pair in which the second element is nil or a Scheme list.• Important! Scheme lists are written in parentheses separated by spaces• A dotted list has any value for the second element of the last pair; maybe not a list!

> (define x (cons 1 2)) > x

12

Page 71: 61A Lecture 24 - University of California, Berkeleycs61a/fa14/assets/slides/24-Scheme... · Scheme is a Dialect of Lisp What are people saying about Lisp? •"The greatest single

Pairs and ListsIn the late 1950s, computer scientists used confusing names• cons: Two-argument procedure that creates a pair• car: Procedure that returns the first element of a pair• cdr: Procedure that returns the second element of a pair• nil: The empty list

They also used a non-obvious notation for linked lists• A (linked) list in Scheme is a pair in which the second element is nil or a Scheme list.• Important! Scheme lists are written in parentheses separated by spaces• A dotted list has any value for the second element of the last pair; maybe not a list!

> (define x (cons 1 2)) > x (1 . 2)

12

Page 72: 61A Lecture 24 - University of California, Berkeleycs61a/fa14/assets/slides/24-Scheme... · Scheme is a Dialect of Lisp What are people saying about Lisp? •"The greatest single

Pairs and ListsIn the late 1950s, computer scientists used confusing names• cons: Two-argument procedure that creates a pair• car: Procedure that returns the first element of a pair• cdr: Procedure that returns the second element of a pair• nil: The empty list

They also used a non-obvious notation for linked lists• A (linked) list in Scheme is a pair in which the second element is nil or a Scheme list.• Important! Scheme lists are written in parentheses separated by spaces• A dotted list has any value for the second element of the last pair; maybe not a list!

> (define x (cons 1 2)) > x (1 . 2) > (car x)

12

Page 73: 61A Lecture 24 - University of California, Berkeleycs61a/fa14/assets/slides/24-Scheme... · Scheme is a Dialect of Lisp What are people saying about Lisp? •"The greatest single

Pairs and ListsIn the late 1950s, computer scientists used confusing names• cons: Two-argument procedure that creates a pair• car: Procedure that returns the first element of a pair• cdr: Procedure that returns the second element of a pair• nil: The empty list

They also used a non-obvious notation for linked lists• A (linked) list in Scheme is a pair in which the second element is nil or a Scheme list.• Important! Scheme lists are written in parentheses separated by spaces• A dotted list has any value for the second element of the last pair; maybe not a list!

> (define x (cons 1 2)) > x (1 . 2) > (car x) 1

12

Page 74: 61A Lecture 24 - University of California, Berkeleycs61a/fa14/assets/slides/24-Scheme... · Scheme is a Dialect of Lisp What are people saying about Lisp? •"The greatest single

Pairs and ListsIn the late 1950s, computer scientists used confusing names• cons: Two-argument procedure that creates a pair• car: Procedure that returns the first element of a pair• cdr: Procedure that returns the second element of a pair• nil: The empty list

They also used a non-obvious notation for linked lists• A (linked) list in Scheme is a pair in which the second element is nil or a Scheme list.• Important! Scheme lists are written in parentheses separated by spaces• A dotted list has any value for the second element of the last pair; maybe not a list!

> (define x (cons 1 2)) > x (1 . 2) > (car x) 1 > (cdr x)

12

Page 75: 61A Lecture 24 - University of California, Berkeleycs61a/fa14/assets/slides/24-Scheme... · Scheme is a Dialect of Lisp What are people saying about Lisp? •"The greatest single

Pairs and ListsIn the late 1950s, computer scientists used confusing names• cons: Two-argument procedure that creates a pair• car: Procedure that returns the first element of a pair• cdr: Procedure that returns the second element of a pair• nil: The empty list

They also used a non-obvious notation for linked lists• A (linked) list in Scheme is a pair in which the second element is nil or a Scheme list.• Important! Scheme lists are written in parentheses separated by spaces• A dotted list has any value for the second element of the last pair; maybe not a list!

> (define x (cons 1 2)) > x (1 . 2) > (car x) 1 > (cdr x) 2

12

Page 76: 61A Lecture 24 - University of California, Berkeleycs61a/fa14/assets/slides/24-Scheme... · Scheme is a Dialect of Lisp What are people saying about Lisp? •"The greatest single

Pairs and ListsIn the late 1950s, computer scientists used confusing names• cons: Two-argument procedure that creates a pair• car: Procedure that returns the first element of a pair• cdr: Procedure that returns the second element of a pair• nil: The empty list

They also used a non-obvious notation for linked lists• A (linked) list in Scheme is a pair in which the second element is nil or a Scheme list.• Important! Scheme lists are written in parentheses separated by spaces• A dotted list has any value for the second element of the last pair; maybe not a list!

> (define x (cons 1 2)) > x (1 . 2) > (car x) 1 > (cdr x) 2 > (cons 1 (cons 2 (cons 3 (cons 4 nil))))

12

Page 77: 61A Lecture 24 - University of California, Berkeleycs61a/fa14/assets/slides/24-Scheme... · Scheme is a Dialect of Lisp What are people saying about Lisp? •"The greatest single

Pairs and ListsIn the late 1950s, computer scientists used confusing names• cons: Two-argument procedure that creates a pair• car: Procedure that returns the first element of a pair• cdr: Procedure that returns the second element of a pair• nil: The empty list

They also used a non-obvious notation for linked lists• A (linked) list in Scheme is a pair in which the second element is nil or a Scheme list.• Important! Scheme lists are written in parentheses separated by spaces• A dotted list has any value for the second element of the last pair; maybe not a list!

> (define x (cons 1 2)) > x (1 . 2) > (car x) 1 > (cdr x) 2 > (cons 1 (cons 2 (cons 3 (cons 4 nil)))) (1 2 3 4)

12

Page 78: 61A Lecture 24 - University of California, Berkeleycs61a/fa14/assets/slides/24-Scheme... · Scheme is a Dialect of Lisp What are people saying about Lisp? •"The greatest single

Pairs and ListsIn the late 1950s, computer scientists used confusing names• cons: Two-argument procedure that creates a pair• car: Procedure that returns the first element of a pair• cdr: Procedure that returns the second element of a pair• nil: The empty list

They also used a non-obvious notation for linked lists• A (linked) list in Scheme is a pair in which the second element is nil or a Scheme list.• Important! Scheme lists are written in parentheses separated by spaces• A dotted list has any value for the second element of the last pair; maybe not a list!

> (define x (cons 1 2)) > x (1 . 2) > (car x) 1 > (cdr x) 2 > (cons 1 (cons 2 (cons 3 (cons 4 nil)))) (1 2 3 4)

Not a well-formed list!

12

Page 79: 61A Lecture 24 - University of California, Berkeleycs61a/fa14/assets/slides/24-Scheme... · Scheme is a Dialect of Lisp What are people saying about Lisp? •"The greatest single

Pairs and ListsIn the late 1950s, computer scientists used confusing names• cons: Two-argument procedure that creates a pair• car: Procedure that returns the first element of a pair• cdr: Procedure that returns the second element of a pair• nil: The empty list

They also used a non-obvious notation for linked lists• A (linked) list in Scheme is a pair in which the second element is nil or a Scheme list.• Important! Scheme lists are written in parentheses separated by spaces• A dotted list has any value for the second element of the last pair; maybe not a list!

> (define x (cons 1 2)) > x (1 . 2) > (car x) 1 > (cdr x) 2 > (cons 1 (cons 2 (cons 3 (cons 4 nil)))) (1 2 3 4)

Not a well-formed list!

12

(Demo)

Page 80: 61A Lecture 24 - University of California, Berkeleycs61a/fa14/assets/slides/24-Scheme... · Scheme is a Dialect of Lisp What are people saying about Lisp? •"The greatest single

Symbolic Programming

Page 81: 61A Lecture 24 - University of California, Berkeleycs61a/fa14/assets/slides/24-Scheme... · Scheme is a Dialect of Lisp What are people saying about Lisp? •"The greatest single

Symbolic Programming

14

Page 82: 61A Lecture 24 - University of California, Berkeleycs61a/fa14/assets/slides/24-Scheme... · Scheme is a Dialect of Lisp What are people saying about Lisp? •"The greatest single

Symbolic Programming

Symbols normally refer to values; how do we refer to symbols?

14

Page 83: 61A Lecture 24 - University of California, Berkeleycs61a/fa14/assets/slides/24-Scheme... · Scheme is a Dialect of Lisp What are people saying about Lisp? •"The greatest single

Symbolic Programming

Symbols normally refer to values; how do we refer to symbols?

> (define a 1)

14

Page 84: 61A Lecture 24 - University of California, Berkeleycs61a/fa14/assets/slides/24-Scheme... · Scheme is a Dialect of Lisp What are people saying about Lisp? •"The greatest single

Symbolic Programming

Symbols normally refer to values; how do we refer to symbols?

> (define a 1) > (define b 2)

14

Page 85: 61A Lecture 24 - University of California, Berkeleycs61a/fa14/assets/slides/24-Scheme... · Scheme is a Dialect of Lisp What are people saying about Lisp? •"The greatest single

Symbolic Programming

Symbols normally refer to values; how do we refer to symbols?

> (define a 1) > (define b 2) > (list a b)

14

Page 86: 61A Lecture 24 - University of California, Berkeleycs61a/fa14/assets/slides/24-Scheme... · Scheme is a Dialect of Lisp What are people saying about Lisp? •"The greatest single

Symbolic Programming

Symbols normally refer to values; how do we refer to symbols?

> (define a 1) > (define b 2) > (list a b) (1 2)

14

Page 87: 61A Lecture 24 - University of California, Berkeleycs61a/fa14/assets/slides/24-Scheme... · Scheme is a Dialect of Lisp What are people saying about Lisp? •"The greatest single

Symbolic Programming

Symbols normally refer to values; how do we refer to symbols?

> (define a 1) > (define b 2) > (list a b) (1 2)

No sign of “a” and “b” in the resulting value

14

Page 88: 61A Lecture 24 - University of California, Berkeleycs61a/fa14/assets/slides/24-Scheme... · Scheme is a Dialect of Lisp What are people saying about Lisp? •"The greatest single

Symbolic Programming

Symbols normally refer to values; how do we refer to symbols?

> (define a 1) > (define b 2) > (list a b) (1 2)

Quotation is used to refer to symbols directly in Lisp.

No sign of “a” and “b” in the resulting value

14

Page 89: 61A Lecture 24 - University of California, Berkeleycs61a/fa14/assets/slides/24-Scheme... · Scheme is a Dialect of Lisp What are people saying about Lisp? •"The greatest single

Symbolic Programming

Symbols normally refer to values; how do we refer to symbols?

> (define a 1) > (define b 2) > (list a b) (1 2)

Quotation is used to refer to symbols directly in Lisp.

No sign of “a” and “b” in the resulting value

> (list 'a 'b)

14

Page 90: 61A Lecture 24 - University of California, Berkeleycs61a/fa14/assets/slides/24-Scheme... · Scheme is a Dialect of Lisp What are people saying about Lisp? •"The greatest single

Symbolic Programming

Symbols normally refer to values; how do we refer to symbols?

> (define a 1) > (define b 2) > (list a b) (1 2)

Quotation is used to refer to symbols directly in Lisp.

No sign of “a” and “b” in the resulting value

> (list 'a 'b) (a b)

14

Page 91: 61A Lecture 24 - University of California, Berkeleycs61a/fa14/assets/slides/24-Scheme... · Scheme is a Dialect of Lisp What are people saying about Lisp? •"The greatest single

Symbolic Programming

Symbols normally refer to values; how do we refer to symbols?

> (define a 1) > (define b 2) > (list a b) (1 2)

Quotation is used to refer to symbols directly in Lisp.

No sign of “a” and “b” in the resulting value

> (list 'a 'b) (a b) > (list 'a b)

14

Page 92: 61A Lecture 24 - University of California, Berkeleycs61a/fa14/assets/slides/24-Scheme... · Scheme is a Dialect of Lisp What are people saying about Lisp? •"The greatest single

Symbolic Programming

Symbols normally refer to values; how do we refer to symbols?

> (define a 1) > (define b 2) > (list a b) (1 2)

Quotation is used to refer to symbols directly in Lisp.

No sign of “a” and “b” in the resulting value

> (list 'a 'b) (a b) > (list 'a b) (a 2)

14

Page 93: 61A Lecture 24 - University of California, Berkeleycs61a/fa14/assets/slides/24-Scheme... · Scheme is a Dialect of Lisp What are people saying about Lisp? •"The greatest single

Symbolic Programming

Symbols normally refer to values; how do we refer to symbols?

> (define a 1) > (define b 2) > (list a b) (1 2)

Quotation is used to refer to symbols directly in Lisp.

No sign of “a” and “b” in the resulting value

> (list 'a 'b) (a b) > (list 'a b) (a 2)

Symbols are now values

14

Page 94: 61A Lecture 24 - University of California, Berkeleycs61a/fa14/assets/slides/24-Scheme... · Scheme is a Dialect of Lisp What are people saying about Lisp? •"The greatest single

Symbolic Programming

Symbols normally refer to values; how do we refer to symbols?

> (define a 1) > (define b 2) > (list a b) (1 2)

Quotation is used to refer to symbols directly in Lisp.

No sign of “a” and “b” in the resulting value

> (list 'a 'b) (a b) > (list 'a b) (a 2)

Quotation can also be applied to combinations to form lists.

Symbols are now values

14

Page 95: 61A Lecture 24 - University of California, Berkeleycs61a/fa14/assets/slides/24-Scheme... · Scheme is a Dialect of Lisp What are people saying about Lisp? •"The greatest single

Symbolic Programming

Symbols normally refer to values; how do we refer to symbols?

> (define a 1) > (define b 2) > (list a b) (1 2)

Quotation is used to refer to symbols directly in Lisp.

No sign of “a” and “b” in the resulting value

> (list 'a 'b) (a b) > (list 'a b) (a 2)

Quotation can also be applied to combinations to form lists.

> (car '(a b c))

Symbols are now values

14

Page 96: 61A Lecture 24 - University of California, Berkeleycs61a/fa14/assets/slides/24-Scheme... · Scheme is a Dialect of Lisp What are people saying about Lisp? •"The greatest single

Symbolic Programming

Symbols normally refer to values; how do we refer to symbols?

> (define a 1) > (define b 2) > (list a b) (1 2)

Quotation is used to refer to symbols directly in Lisp.

No sign of “a” and “b” in the resulting value

> (list 'a 'b) (a b) > (list 'a b) (a 2)

Quotation can also be applied to combinations to form lists.

> (car '(a b c)) a

Symbols are now values

14

Page 97: 61A Lecture 24 - University of California, Berkeleycs61a/fa14/assets/slides/24-Scheme... · Scheme is a Dialect of Lisp What are people saying about Lisp? •"The greatest single

Symbolic Programming

Symbols normally refer to values; how do we refer to symbols?

> (define a 1) > (define b 2) > (list a b) (1 2)

Quotation is used to refer to symbols directly in Lisp.

No sign of “a” and “b” in the resulting value

> (list 'a 'b) (a b) > (list 'a b) (a 2)

Quotation can also be applied to combinations to form lists.

> (car '(a b c)) a > (cdr '(a b c))

Symbols are now values

14

Page 98: 61A Lecture 24 - University of California, Berkeleycs61a/fa14/assets/slides/24-Scheme... · Scheme is a Dialect of Lisp What are people saying about Lisp? •"The greatest single

Symbolic Programming

Symbols normally refer to values; how do we refer to symbols?

> (define a 1) > (define b 2) > (list a b) (1 2)

Quotation is used to refer to symbols directly in Lisp.

No sign of “a” and “b” in the resulting value

> (list 'a 'b) (a b) > (list 'a b) (a 2)

Quotation can also be applied to combinations to form lists.

> (car '(a b c)) a > (cdr '(a b c)) (b c)

Symbols are now values

14

Page 99: 61A Lecture 24 - University of California, Berkeleycs61a/fa14/assets/slides/24-Scheme... · Scheme is a Dialect of Lisp What are people saying about Lisp? •"The greatest single

Scheme Lists and Quotation

15

Page 100: 61A Lecture 24 - University of California, Berkeleycs61a/fa14/assets/slides/24-Scheme... · Scheme is a Dialect of Lisp What are people saying about Lisp? •"The greatest single

Scheme Lists and Quotation

Dots can be used in a quoted list to specify the second element of the final pair.

15

Page 101: 61A Lecture 24 - University of California, Berkeleycs61a/fa14/assets/slides/24-Scheme... · Scheme is a Dialect of Lisp What are people saying about Lisp? •"The greatest single

Scheme Lists and Quotation

Dots can be used in a quoted list to specify the second element of the final pair.

> (cdr (cdr '(1 2 . 3)))

15

Page 102: 61A Lecture 24 - University of California, Berkeleycs61a/fa14/assets/slides/24-Scheme... · Scheme is a Dialect of Lisp What are people saying about Lisp? •"The greatest single

Scheme Lists and Quotation

Dots can be used in a quoted list to specify the second element of the final pair.

> (cdr (cdr '(1 2 . 3))) 3

15

Page 103: 61A Lecture 24 - University of California, Berkeleycs61a/fa14/assets/slides/24-Scheme... · Scheme is a Dialect of Lisp What are people saying about Lisp? •"The greatest single

Scheme Lists and Quotation

Dots can be used in a quoted list to specify the second element of the final pair.

> (cdr (cdr '(1 2 . 3))) 3

However, dots appear in the output only of ill-formed lists.

15

Page 104: 61A Lecture 24 - University of California, Berkeleycs61a/fa14/assets/slides/24-Scheme... · Scheme is a Dialect of Lisp What are people saying about Lisp? •"The greatest single

Scheme Lists and Quotation

Dots can be used in a quoted list to specify the second element of the final pair.

> (cdr (cdr '(1 2 . 3))) 3

However, dots appear in the output only of ill-formed lists.

> '(1 2 . 3)

15

Page 105: 61A Lecture 24 - University of California, Berkeleycs61a/fa14/assets/slides/24-Scheme... · Scheme is a Dialect of Lisp What are people saying about Lisp? •"The greatest single

Scheme Lists and Quotation

Dots can be used in a quoted list to specify the second element of the final pair.

> (cdr (cdr '(1 2 . 3))) 3

However, dots appear in the output only of ill-formed lists.

> '(1 2 . 3) 1 2 3

15

Page 106: 61A Lecture 24 - University of California, Berkeleycs61a/fa14/assets/slides/24-Scheme... · Scheme is a Dialect of Lisp What are people saying about Lisp? •"The greatest single

Scheme Lists and Quotation

Dots can be used in a quoted list to specify the second element of the final pair.

> (cdr (cdr '(1 2 . 3))) 3

However, dots appear in the output only of ill-formed lists.

> '(1 2 . 3) (1 2 . 3)

1 2 3

15

Page 107: 61A Lecture 24 - University of California, Berkeleycs61a/fa14/assets/slides/24-Scheme... · Scheme is a Dialect of Lisp What are people saying about Lisp? •"The greatest single

Scheme Lists and Quotation

Dots can be used in a quoted list to specify the second element of the final pair.

> (cdr (cdr '(1 2 . 3))) 3

However, dots appear in the output only of ill-formed lists.

> '(1 2 . 3) (1 2 . 3) > '(1 2 . (3 4))

1 2 3

15

Page 108: 61A Lecture 24 - University of California, Berkeleycs61a/fa14/assets/slides/24-Scheme... · Scheme is a Dialect of Lisp What are people saying about Lisp? •"The greatest single

Scheme Lists and Quotation

Dots can be used in a quoted list to specify the second element of the final pair.

> (cdr (cdr '(1 2 . 3))) 3

However, dots appear in the output only of ill-formed lists.

> '(1 2 . 3) (1 2 . 3) > '(1 2 . (3 4))

1 2 3

1 2

15

Page 109: 61A Lecture 24 - University of California, Berkeleycs61a/fa14/assets/slides/24-Scheme... · Scheme is a Dialect of Lisp What are people saying about Lisp? •"The greatest single

Scheme Lists and Quotation

Dots can be used in a quoted list to specify the second element of the final pair.

> (cdr (cdr '(1 2 . 3))) 3

However, dots appear in the output only of ill-formed lists.

> '(1 2 . 3) (1 2 . 3) > '(1 2 . (3 4))

1 2 3

1 2 3 4 nil

15

Page 110: 61A Lecture 24 - University of California, Berkeleycs61a/fa14/assets/slides/24-Scheme... · Scheme is a Dialect of Lisp What are people saying about Lisp? •"The greatest single

Scheme Lists and Quotation

Dots can be used in a quoted list to specify the second element of the final pair.

> (cdr (cdr '(1 2 . 3))) 3

However, dots appear in the output only of ill-formed lists.

> '(1 2 . 3) (1 2 . 3) > '(1 2 . (3 4)) (1 2 3 4)

1 2 3

1 2 3 4 nil

15

Page 111: 61A Lecture 24 - University of California, Berkeleycs61a/fa14/assets/slides/24-Scheme... · Scheme is a Dialect of Lisp What are people saying about Lisp? •"The greatest single

Scheme Lists and Quotation

Dots can be used in a quoted list to specify the second element of the final pair.

> (cdr (cdr '(1 2 . 3))) 3

However, dots appear in the output only of ill-formed lists.

> '(1 2 . 3) (1 2 . 3) > '(1 2 . (3 4)) (1 2 3 4) > '(1 2 3 . nil)

1 2 3

1 2 3 4 nil

15

Page 112: 61A Lecture 24 - University of California, Berkeleycs61a/fa14/assets/slides/24-Scheme... · Scheme is a Dialect of Lisp What are people saying about Lisp? •"The greatest single

Scheme Lists and Quotation

Dots can be used in a quoted list to specify the second element of the final pair.

> (cdr (cdr '(1 2 . 3))) 3

However, dots appear in the output only of ill-formed lists.

> '(1 2 . 3) (1 2 . 3) > '(1 2 . (3 4)) (1 2 3 4) > '(1 2 3 . nil)

1 2 3

1 2 3 4 nil

1 2 3 nil

15

Page 113: 61A Lecture 24 - University of California, Berkeleycs61a/fa14/assets/slides/24-Scheme... · Scheme is a Dialect of Lisp What are people saying about Lisp? •"The greatest single

Scheme Lists and Quotation

Dots can be used in a quoted list to specify the second element of the final pair.

> (cdr (cdr '(1 2 . 3))) 3

However, dots appear in the output only of ill-formed lists.

> '(1 2 . 3) (1 2 . 3) > '(1 2 . (3 4)) (1 2 3 4) > '(1 2 3 . nil) (1 2 3)

1 2 3

1 2 3 4 nil

1 2 3 nil

15

Page 114: 61A Lecture 24 - University of California, Berkeleycs61a/fa14/assets/slides/24-Scheme... · Scheme is a Dialect of Lisp What are people saying about Lisp? •"The greatest single

Scheme Lists and Quotation

Dots can be used in a quoted list to specify the second element of the final pair.

> (cdr (cdr '(1 2 . 3))) 3

However, dots appear in the output only of ill-formed lists.

> '(1 2 . 3) (1 2 . 3) > '(1 2 . (3 4)) (1 2 3 4) > '(1 2 3 . nil) (1 2 3)

What is the printed result of evaluating this expression?

1 2 3

1 2 3 4 nil

1 2 3 nil

15

Page 115: 61A Lecture 24 - University of California, Berkeleycs61a/fa14/assets/slides/24-Scheme... · Scheme is a Dialect of Lisp What are people saying about Lisp? •"The greatest single

Scheme Lists and Quotation

Dots can be used in a quoted list to specify the second element of the final pair.

> (cdr (cdr '(1 2 . 3))) 3

However, dots appear in the output only of ill-formed lists.

> '(1 2 . 3) (1 2 . 3) > '(1 2 . (3 4)) (1 2 3 4) > '(1 2 3 . nil) (1 2 3)

What is the printed result of evaluating this expression?

> (cdr '((1 2) . (3 4 . (5))))

1 2 3

1 2 3 4 nil

1 2 3 nil

15

Page 116: 61A Lecture 24 - University of California, Berkeleycs61a/fa14/assets/slides/24-Scheme... · Scheme is a Dialect of Lisp What are people saying about Lisp? •"The greatest single

Scheme Lists and Quotation

Dots can be used in a quoted list to specify the second element of the final pair.

> (cdr (cdr '(1 2 . 3))) 3

However, dots appear in the output only of ill-formed lists.

> '(1 2 . 3) (1 2 . 3) > '(1 2 . (3 4)) (1 2 3 4) > '(1 2 3 . nil) (1 2 3)

What is the printed result of evaluating this expression?

> (cdr '((1 2) . (3 4 . (5)))) (3 4 5)

1 2 3

1 2 3 4 nil

1 2 3 nil

15

Page 117: 61A Lecture 24 - University of California, Berkeleycs61a/fa14/assets/slides/24-Scheme... · Scheme is a Dialect of Lisp What are people saying about Lisp? •"The greatest single

Sierpinski's Triangle

(Demo)