function* genMap(ia: Iterator, f: (i: number, a: A) => B) {
let n = -1;
while (true) {
const result = ia.next();
if (result.done) {
break;
}
n += 1;
yield f(n, result.value);
}
}
export const mapWithIndex_ = (fa: Iterable, f: (i: number, a: A) => B): Iterable => ({
[Symbol.iterator]: () => genMap(fa[Symbol.iterator](), f)
});
export const mapWithIndex = (f: (i: number, a: A) => B) => (fa: Iterable): Iterable => ({
[Symbol.iterator]: () => genMap(fa[Symbol.iterator](), f)
});
export const map_ = (fa: Iterable, f: (a: A) => B): Iterable => mapWithIndex_(fa, (_, a) => f(a));
export const map = (f: (a: A) => B) => (fa: Iterable): Iterable => map_(fa, f);