export function* tap( iterable: Iterable , fn: (element: T, index: number) => unknown ): IterableIterator { let index = 0 for (const element of iterable) { fn(element, index) yield element index++ } }