Download presentation
Presentation is loading. Please wait.
2
Administrivia Make sure you have completed the Mid Semester Survey –Scheduled the week before Spring Break –this will be worth some points Reading is important for this week: –Tic-tac-toe, chapter 10 in SS –Case study: change-making
3
March 14Higher order procedures March 21Spring Break March 28Tic-Tac-Toe – read SS chapter 10! Case Study: Making Change (tree-recursion) – in the reader! April 4Elections mini-project (#3) April 11Midterm #2 (during lecture) Extending sentences, words to lists (in lab) April 18Advanced list processing (recursion) Start on the big project April 25Work on the big project (check-off 1, 2) May 2Big project (check-off 3) May 9Big Project due!
4
Tic Tac Toe
5
Higher order function (HOFs) A HOF is a procedure that takes a procedure as an argument. There are three main ones that work with words and sentences: –every – do something to each element –keep – return only certain elements –accumulate – combine the elements
6
(define (square-all sent) (if (empty? sent) ‘() (se (square (first sent)) (square-all (bf sent)) )) (square-all ‘(1 2 3 4 5)) (every square ‘(1 2 3 4 5))
7
Write "my-keep" (my-keep odd? '(1 2 3 4 5)) (1 3 5)
8
Which HOFs would you use to write these? 1)capitalize-proper-names (c-p-n '(mr. smith goes to washington)) (mr. Smith goes to Washington) 2)count-if (count-if odd? '(1 2 3 4 5)) 3 3)longest-word (longest-word '(I had fun on spring break)) spring 4)count-vowels-in-each (c-e-l '(I have forgotten everything)) (1 2 3 3) 5)squares-greater-than-100 (s-g-t-100 '(2 9 13 16 9 45) (169 256 2025) 6)sum-of-squares (sos '(1 2 3 4 5 6 7) 30 7)successive-concatenation (sc '(a b c d e) (a ab abc abcd abcde)
9
Write! Successive-concatenation (sc '(a b c d e)) (a ab abc abcd abcde) (sc '(the big red barn)) (the thebig thebigred thebigredbarn) (define (sc sent) (accumulate (lambda ?? ) sent))
10
HOF: Base cases can be confusing What does (every square '()) return? –(every square "") –(every square "12345") What about (keep odd? '()) –(keep odd? "") How about (accumulate + ' ()) –(accumulate + "") –(accumulate * '()) –(accumulate word '(a)) –(accumulate + '(a) –(accumulate word '(a b)) –(accumulate + '(a b))
11
lambda "lambda" is a special form that lets you make a function: (lambda (param1 param2 …) statement1 statement2 ) (lambda (x) (* x x) [a function] (every (lambda (x) (* x x) '(1 2 3 4)) (1 4 9 16)
12
Can a function defined by a lambda be recursive? (lambda (sent) (if (empty? sent) '() (se (square (first sent)) (???? (bf sent)))))
13
When do you NEED lambda? 1.When you need the context (add-suffix '-is-great '(nate sam mary)) (nate-is-great sam-is-great mary-is-great) 2.When you need to make a function on the fly
14
Procedures that make procedures Generally, name procedures that create procedures "make-XXX" (make-bookends 'o) #[closure arglist=(inner-wd) d7d0e0] ((make-bookends 'o) 'hi) ohio ((make-bookends 'to) 'ron) toronto (define tom-bookend (make-bookends 'tom)) (tom-bookends "") tomtom
15
Ha! Make a procedure that returns a procedure that takes a number X and returns a procedure that takes a number and adds X to it. –Whew!
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.