previous | index | next

The filter Procedure

Q: What's the result of filtering an empty list?

A: The empty list.

Q: If the head of a nonempty list satisfies the predicate, what should filter return?
(Hint: Answer in terms of the head and the tail.)

A: The result of consing the head onto the result of filtering the tail.

Q: If the head of a nonempty list does not satisfy the predicate, what should filter return?

A: The result of filtering the tail.

     (define filter
       (lambda (ok? lst)
         (cond ((null? lst) __?__)
               ((ok? (car lst)) __?__)
               (else __?__))))

previous | index | next