cs3l: introduction to symbolic programming summer 2008colleen lewis [email protected] lecture...
TRANSCRIPT
![Page 1: CS3L: Introduction to Symbolic Programming Summer 2008Colleen Lewis colleenL@berkeley.edu Lecture 17: HOF and Tick-Tack-Toe](https://reader035.vdocument.in/reader035/viewer/2022072006/56649d135503460f949e6ef0/html5/thumbnails/1.jpg)
CS3L: Introduction to
Symbolic Programming
Summer 2008 Colleen Lewis
Lecture 17:HOF and Tick-Tack-Toe
![Page 2: CS3L: Introduction to Symbolic Programming Summer 2008Colleen Lewis colleenL@berkeley.edu Lecture 17: HOF and Tick-Tack-Toe](https://reader035.vdocument.in/reader035/viewer/2022072006/56649d135503460f949e6ef0/html5/thumbnails/2.jpg)
Today
lambda every keep accumulate Tick-tack-toe (ttt) Participation grades Homework
Miniproject 3 starts next week! Due Friday July 25 th It is already posted… If you want to get started.
![Page 3: CS3L: Introduction to Symbolic Programming Summer 2008Colleen Lewis colleenL@berkeley.edu Lecture 17: HOF and Tick-Tack-Toe](https://reader035.vdocument.in/reader035/viewer/2022072006/56649d135503460f949e6ef0/html5/thumbnails/3.jpg)
lambda
(lambda (arg1 arg2 …) body… ) Why do we need lambda?
To do cool things with every, keep, accumulate
![Page 4: CS3L: Introduction to Symbolic Programming Summer 2008Colleen Lewis colleenL@berkeley.edu Lecture 17: HOF and Tick-Tack-Toe](https://reader035.vdocument.in/reader035/viewer/2022072006/56649d135503460f949e6ef0/html5/thumbnails/4.jpg)
every
(every procedure sent)procedure
a procedure that takes in one argument a procedure that returns a word or a sentence
sent a sentence with 0 or more words a word with 0 or more letters
![Page 5: CS3L: Introduction to Symbolic Programming Summer 2008Colleen Lewis colleenL@berkeley.edu Lecture 17: HOF and Tick-Tack-Toe](https://reader035.vdocument.in/reader035/viewer/2022072006/56649d135503460f949e6ef0/html5/thumbnails/5.jpg)
every example(define (add-suffix suffix sent)
(every
(lambda (wd)(word wd suffix))
sent))
(lambda (‘let) (word ‘let ‘ing)
‘leting
(lambda (‘get) (word ‘get ‘ing)
‘geting
(lambda (‘eat) (word ‘eat ‘ing)
‘eating
(se
> (add-suffix ‘ing ‘(eat get let))
![Page 6: CS3L: Introduction to Symbolic Programming Summer 2008Colleen Lewis colleenL@berkeley.edu Lecture 17: HOF and Tick-Tack-Toe](https://reader035.vdocument.in/reader035/viewer/2022072006/56649d135503460f949e6ef0/html5/thumbnails/6.jpg)
keep
(keep procedure sent)procedure
a procedure that takes in one argument a procedure that returns #t or #f
sent a sentence with 0 or more words a word with 0 or more letters
![Page 7: CS3L: Introduction to Symbolic Programming Summer 2008Colleen Lewis colleenL@berkeley.edu Lecture 17: HOF and Tick-Tack-Toe](https://reader035.vdocument.in/reader035/viewer/2022072006/56649d135503460f949e6ef0/html5/thumbnails/7.jpg)
keep example(define (alliterations wd sent)
(keep
(lambda (one-wd)
(equal? (first one-wd) (first wd)))
sent))
(lambda (‘con) (equal? (first ‘con) (first ‘cat)))
‘con
(lambda (‘bar)(equal? (first ‘bar) (first ‘cat)))
‘()
(lambda (‘car) (equal? (first ‘car) (first ‘cat)))
‘car
(se
> (alliterations ‘cat ‘(car bar con))
![Page 8: CS3L: Introduction to Symbolic Programming Summer 2008Colleen Lewis colleenL@berkeley.edu Lecture 17: HOF and Tick-Tack-Toe](https://reader035.vdocument.in/reader035/viewer/2022072006/56649d135503460f949e6ef0/html5/thumbnails/8.jpg)
accumulate
(accumulate procedure sent)procedure
a procedure that takes in two arguments a procedure that combines things together
sent a sentence with 1 or more words a word with 1 or more letters
![Page 9: CS3L: Introduction to Symbolic Programming Summer 2008Colleen Lewis colleenL@berkeley.edu Lecture 17: HOF and Tick-Tack-Toe](https://reader035.vdocument.in/reader035/viewer/2022072006/56649d135503460f949e6ef0/html5/thumbnails/9.jpg)
remove-dupls> (remove-dupls ‘there)
‘r ‘e‘re
‘thre
‘e
‘re
‘h
‘hre
‘t
‘thre
![Page 10: CS3L: Introduction to Symbolic Programming Summer 2008Colleen Lewis colleenL@berkeley.edu Lecture 17: HOF and Tick-Tack-Toe](https://reader035.vdocument.in/reader035/viewer/2022072006/56649d135503460f949e6ef0/html5/thumbnails/10.jpg)
accumulate example
(define (remove-dupls wd)
(accumulate
(lambda (char wd-so-far)
(if (member? char wd-so-far)
wd-so-far
(word char wd-so-far)))
wd))
![Page 11: CS3L: Introduction to Symbolic Programming Summer 2008Colleen Lewis colleenL@berkeley.edu Lecture 17: HOF and Tick-Tack-Toe](https://reader035.vdocument.in/reader035/viewer/2022072006/56649d135503460f949e6ef0/html5/thumbnails/11.jpg)
Tick-Tack-Toe (ttt)
Pivot
![Page 12: CS3L: Introduction to Symbolic Programming Summer 2008Colleen Lewis colleenL@berkeley.edu Lecture 17: HOF and Tick-Tack-Toe](https://reader035.vdocument.in/reader035/viewer/2022072006/56649d135503460f949e6ef0/html5/thumbnails/12.jpg)
Using lambda with define
These are VERY DIFFERENT: How would you call each?
(define (adder-1 y)
(lambda (x) (+ x 1)))
(define adder-2
(lambda (x) (+ x 1)))
![Page 13: CS3L: Introduction to Symbolic Programming Summer 2008Colleen Lewis colleenL@berkeley.edu Lecture 17: HOF and Tick-Tack-Toe](https://reader035.vdocument.in/reader035/viewer/2022072006/56649d135503460f949e6ef0/html5/thumbnails/13.jpg)
Participation Grades I did one of the random participation grading and very few people had
done the brainstorm step that I randomly chose.
http://inst.eecs.berkeley.edu/~cs3/su08/reader_files/geninfo.pdf
You will also receive a small number of points for participation and for whether you have worked on particular activities in the on-line materials. Which activities we will check on won't be known to you (or to us, beforehand), but will generally be an activity for which you are asked to answer a question or create a file. The purpose of grading this is to encourage you to keep up-to-date on the lab materials; generally, the grades for these activities will consider whether you attempted it, rather than whether you did it well. You will be docked for participation points if you miss (some) lab sessions, although we may decide to additionally consider how well you contributed to the “community” in your lab session.