import { curry } from '@typed/lambda'
/**
* Zip together two lists into a list of Tuples
* @param xs :: [a]
* @param ys :: [b]
* @returns :: [(a, b)]
*/
export const zip = curry(function zip(xs: ReadonlyArray, ys: ReadonlyArray): [A, B][] {
const length = Math.min(xs.length, ys.length)
const newList = Array(length)
for (let i = 0; i < length; ++i) {
newList[i] = [xs[i], ys[i]]
}
return newList
}) as {
(xs: ReadonlyArray, ys: ReadonlyArray): [A, B][]
(xs: ReadonlyArray): (ys: ReadonlyArray) => [A, B][]
}