Discards items from another iterator which fail to match a predicate.
Each time this iterator is advanced, it repeatedly calls (iter-next! it) until (f item)
returns a value other than #f or #n. That item is then produced by the iterator.
(prn ..(filter even? '(1 2 3 4))) ; prints 2 4