Filter a List
A filter keeps items in a list that pass some test, while removing other items.
(defn myfilter [fn lst]
  (if (empty? lst)       ;  base case
      '()
      (if (fn (first lst))   ; does it pass?
          (cons (first lst)  ; yes: keep it
                (myfilter fn (rest lst)))
          ; else: ignore it but keep going
          (myfilter fn (rest lst)) ) ) )
user=> (myfilter number? '(2 a d 4 3 d e 8)) (2 4 3 8)
filter is a built-in function of Clojure.