export function* zip(value: Iterable, items: Iterable): Iterable<[T, B]> { const iteratorA = value[Symbol.iterator](); const iteratorB = items[Symbol.iterator](); let a = iteratorA.next(); let b = iteratorB.next(); while (!a.done && !b.done) { yield [a.value, b.value]; a = iteratorA.next(); b = iteratorB.next(); } }