F first(r:NumRange, predicate:Fun) { finish = Return() r.each(F(i) { predicate(i) throws finish(i) }) null }