Iterable<(T, V)> zipWith<V>(Iterable<V> other) sync* { final it1 = iterator; final it2 = other.iterator; while (it1.moveNext() && it2.moveNext()) { yield (it1.current, it2.current); } }