練習問題 P.68 numbers-only

(define (filter (proc lis))
  (cond ((null? lis) lis)
        (pred   (car lis)) (cons (car lis) (filter proc (cdr lis)))
        (else (filter proc (cdr lis)))))

(define (for-each-numbers (proc lis))
  (for-each proc (filter numbers? lis)))

(define (map-numbers (proc lis))
  (map proc (filter numbers? lis)))

(defin (numbers-only (walker)
  (lambda (proc lis)
    (walker proc (filter numbers? lis)))))