A type of Iterator that only yields elements matching some predicate
Iterator
next:() ‑> A
hasNextWhere:A ‑> Bool ‑> Bool