1 / 15

Administrivia

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. Tic Tac Toe. Higher order function (HOFs).

satin
Download Presentation

Administrivia

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Administrivia • Make sure you have completed theMid 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

  2. Tic Tac Toe

  3. 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

  4. (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))

  5. Write "my-keep" (my-keep odd? '(1 2 3 4 5))  (1 3 5)

  6. Which HOFs would you use to write these? • capitalize-proper-names (c-p-n '(mr. smith goes to washington)) (mr. Smith goes to Washington) • count-if (count-if odd? '(1 2 3 4 5))  3 • longest-word (longest-word '(I had fun on spring break))  spring • count-vowels-in-each (c-e-l '(I have forgotten everything))  (1 2 3 3) • squares-greater-than-100 (s-g-t-100 '(2 9 13 16 9 45)  (169 256 2025) • sum-of-squares (sos '(1 2 3 4 5 6 7)  30 • successive-concatenation (sc '(a b c d e)  (a ab abc abcd abcde)

  7. 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))

  8. 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))

  9. 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)

  10. Can a function defined by a lambda be recursive? (lambda (sent) (if (empty? sent) '() (se (square (first sent)) (????(bf sent)))))

  11. When do you NEED lambda? • When you need the context (add-suffix '-is-great '(nate sam mary)) (nate-is-great sam-is-great mary-is-great) • When you need to make a function on the fly

  12. 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

  13. 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!

More Related