Presentation is loading. Please wait.

Presentation is loading. Please wait.

Slide 1 CS3 Fall 2005 Lecture 9: Higher Order Functions.

Similar presentations


Presentation on theme: "Slide 1 CS3 Fall 2005 Lecture 9: Higher Order Functions."— Presentation transcript:

1 Slide 1 CS3 Fall 2005 Lecture 9: Higher Order Functions

2 Slide 2 Oct 17Miniproject #2: Number-spelling Oct 24Higher order procedures Oct 31More HOF, the "tic-tac-toe" program "Change Making" case study Nov 7Miniproject #3: Election-processing Nov 14Midterm #2 Lists Nov 21Start on the project: check-off #1 Nov 28Work on the project: checks #2 and #3 Dec 5Finish and turn in the project Dec 17Final Exam (midterm #3)

3 Slide 3 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/cs3fall05http://hiroki.ucdev.org/cs3fall05 –http://wla.berkeley.edu/http://wla.berkeley.edu/

4 Slide 4 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?

5 Slide 5 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)

6 Slide 6 What is a procedure? (or, a function).

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

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

9 Slide 9 Why have procedures as objects? Other programming languages don’t (often)

10 Slide 10 Procedures can be taken as arguments… (define (apply-to-5-and-3 func) (func 5 3)) (define (math-function? func) (or (equal? func +) (equal? func -) (equal? func *) (equal? func /)))

11 Slide 11 …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))

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

13 Slide 13 Most recursive functions that operate on a sentence fall into: –Mapping: square-allEVERY –Counting: count-vowels, count-evens –Finding: member, first-even –Filtering: keep-evensKEEP –Testing: all-even? –Combining: sum-evensACCUMULATE Patterns for simple recursions 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

14 Slide 14 (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))

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

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


Download ppt "Slide 1 CS3 Fall 2005 Lecture 9: Higher Order Functions."

Similar presentations


Ads by Google