Suppose we want to write a filter
function in Scheme:
;; Return a list containing all the ITEMS where PRED
;; returns #t.
(define (my-filter items pred)
(if (pair? items)
(if (pred (car items))
(cons (car items) (my-filter (cdr items) pred))
(my-filter (cdr items) pred))
'()))