Higher Order Procedures:
1. Define a procedure (pa f x) which "partially applies" a 2 argument
procedure f to its first argument x. Example:
(define inc (pa + 1))
(inc 3) => 4
(define (pa f x)
2. Currying lets us pass a procedure its arguments one at a time.
From the problem set, curry is defined as
(define (curry f)
(lambda (x)
(lambda (y)
(f x y))))
Write a procedure (uncurry cf) which takes a curried procedure and
returns a procedure of two arguments (so (uncurry (curry +)) is +)
(define (uncurry cf)
3. What does the procedure returned by (pa pa pa) do?
4. What does the procedure returned by (uncurry curry) do?
List Practice:
1. Use map to double every element of a list l.
2. Use filter to remove from a list l any numbers that are not squares
of integers.
3. Use accumulate to count the number of even numbers in a list l.