1 / 16

CS3 Fall 2005

CS3 Fall 2005. Lecture 9: Higher Order Functions. Administrivia. Mid-semester survey this week (Thur/Fri) you NEED to do this. Reading this week: Simply Scheme Chapters 7-9 Difference between dates, part III Two resources: http://hiroki.ucdev.org/cs3fall05 http://wla.berkeley.edu/.

milica
Download Presentation

CS3 Fall 2005

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. CS3 Fall 2005 Lecture 9: Higher Order Functions

  2. Administrivia • Mid-semester survey this week (Thur/Fri) • you NEED to do this. • Reading this week: • Simply Scheme Chapters 7-9 • Difference between dates, part III • Two resources: • http://hiroki.ucdev.org/cs3fall05 • http://wla.berkeley.edu/

  3. When should the Midterm #2 review be? The second midterm is on Monday, Nov. 14 Do you want the review on: Sunday? (Nov. 13) Fri night? (Nov. 11) Wed night? (Nov. 9) And, what time?

  4. Quick review from last time: binary • Write binary, a procedure to generate the possible binary numbers given n bits. (binary 1)(0 1) (binary 2)(00 01 10 11) (binary 3)(000 001 010 011 100 101 110 111)

  5. What is a procedure? (or, a function).

  6. Treating functions as things • “define” associates a name with a value • The usual form associates a name with a object that is a function (define (square x) (* x x)) (define (pi) 3.1415926535) • You can define other objects, though: (define *pi* 3.1415926535) (define *month-names* ‘(january february march april may june july august september october november december))

  7. Consider two forms of “month-name”: (define (month-name1 date) (first date)) (define month-name2 first)

  8. Why have procedures as objects? Other programming languages don’t (often)

  9. Procedures can be takenas arguments… (define (apply-to-5-and-3 func) (func 5 3)) (define (math-function? func) (or (equal? func +) (equal? func -) (equal? func *) (equal? func /)))

  10. …and procedures can be returned from procedures (define (choose-func name) (cond ((equal? name ‘plus) +) ((equal? name ‘minus) -) ((equal? name ‘divide) /) (else ‘sorry))) (define (make-add-to number) (lambda (x) (+ number x))) (define add-to-5 (make-add-to 5))

  11. Higher order function (HOFs) • A HOF is a function that takes a function 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

  12. Patterns for simple recursions • Most recursive functions that operate on a sentence fall into: • Mapping: square-all EVERY • Counting: count-vowels, count-evens • Finding: member, first-even • Filtering: keep-evens KEEP • Testing: all-even? • Combining: sum-evens ACCUMULATE • Most recursive functions that operate on a sentence fall into: • Mapping: square-all • Counting: count-vowels, count-evens • Finding: member, first-even • Filtering: keep-evens • Testing: all-even? • Combining: sum-evens

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

  14. Write "my-every" (my-every factorial '(1 2 3 4 5))  (1 2 6 24 120)

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

More Related