remarks example export function zip < A > ( a ) ; export function zip < A , B > ( a , b ) ; export function zip < A , B , C > ( a , b , c ) ; export function zip < A , B , C , D > ( a , b , c , d ) ; export function zip < A , B , C , D , E > ( a , b , c , d , e ) ; export function zip < A , B , C , D , E , F > ( a , b , c , d , e , f ) ; export function zip < A , B , C , D , E , F , G > ( a , b , c , d , e , f , g ) ; export function zip < A , B , C , D , E , F , G , H > ( a , b , c , d , e , f , g , h ) ; export function * zip ( ... src ) { const iters = src . map ( ( s ) => s [ Symbol . iterator ] ( ) ) ; while ( true ) { const tuple = [ ] ; for ( let i of iters ) { let v = i . next ( ) ; if ( v . done ) { return ; } tuple . push ( v . value ) ; } yield tuple ; } }