function* genCombine(ia: Iterator, ib: Iterator) { while (true) { const result = ia.next(); if (result.done) { break; } yield result.value; } while (true) { const result = ib.next(); if (result.done) { break; } yield result.value; } } export const append_ = (fa: Iterable, fb: Iterable): Iterable => ({ [Symbol.iterator]: () => genCombine(fa[Symbol.iterator](), fb[Symbol.iterator]()) });