| Schedule | Readings | Labs | Homework | Mechanics | Contact | |
| CSC 151-01, 2007S » Reading 32a » Higher-order procedures | ||||||
Summary: In these notes, we reconsider the how and why of higher-order procedures.
Contents:
(define hypotenuse (lambda (a b) (sqrt (+ (* a a) (* b b)))))
(define redder
(lambda (amt)
(lambda (color)
(rgb (+ amt (red color)) (green color) (blue color)))))
compose
(define compose
(lambda (f g)
(lambda (x)
(f (g x)))))
(compose sin sqrt)
(compose car reverse)left-section
(define left-section
(lambda (func left)
(lambda (right)
(func left right))))
(define l-s left-section)
(l-s + 1)(l-s + 2)
(l-s * 2)(l-s / 1)(define right-section
(lambda (func right)
(lambda (left)
(func left right))))
(define r-s right-section)
(r-s - 1)(define scale-grades
(lambda (grades)
(if (null? grades)
null
(cons (* 4/3 (car grades))
(scale-grades (cdr grades))))))
(define extra-credit
(lambda (grades)
(if (null? grades)
null
(cons (+ 3 (car grades))
(extra-credit (cdr grades))))))
(define map
(lambda (func lst)
(if (null? lst)
null
(cons (func (car lst))
(map func (cdr lst))))))
(define scale-grades
(lambda (grades)
(map (lambda (grade) (* 4/3 grade)) grades)))
(define extra-credit
(lambda (grades)
(map (lambda (grade) (+ 7 grade)) grades)))
(define scale-grades
(lambda (grades)
(map (l-s * 4/3) grades)))
(define extra-credit
(lambda (grades)
(map (l-s + 7) grades)))
(define scale-grades (l-s map (l-s * 4/3)))
(define extra-credit (l-s map (l-s + 2)))
(define list-of-numbers?
(lambda (lst)
(or (null? lst)
(and (pair? lst)
(real? (car lst))
(list-of-numbers? (cdr lst))))))
(define list-of-symbols?
(lambda (lst)
(or (null? lst)
(and (pair? lst)
(symbol? (car lst))
(list-of-symbols? (cdr lst))))))
(define list-of?
(lambda (test? lst)
(or (null? lst)
(and (pair? lst)
(test? (car lst))
(list-of? test? (cdr lst))))))
(define valid-form?
(lambda (val) (and (pair? val) (string? (car val)) (integer? (cdr val)))))
(define all-valid?
(lambda (lst) (list-of? valid-form? lst)))
(define all-valid? (l-s list-of? valid-form?))
(define all-valid? (l-s list-of? (lamda (val) (and (pair? val) (string? (car val)) (integer? (cdr val))))))
Janet Davis (davisjan@cs.grinnell.edu)
Created April 15, 2007 based on http://www.cs.grinnell.edu/~davisjan/csc/151/2006F/examples/notes.11-03.html