zip :: [a] -> [b] -> [(a, b)]
zip :: [a] -> [b] -> [(Maybe a, Maybe b)]
zipWithTail :: [a] -> [b] -> ([(a, b)], Either [a] [b])