export function* uniq(iterable: Iterable): IterableIterator { const bucket = new Set() for (const element of iterable) { if (!bucket.has(element)) { yield element bucket.add(element) } } }