let keep_whilei pred s = let f _ = match peek s with | None -> None | Some a -> if pred (count s) a then (junk s; Some a) else None in from f