innerZip xs (ys:yss) = zip as ys : innerZip bs yss
    where (as, bs) = splitAt (length ys) xs
innerZip xs (ys:yss) = zip as ys : innerZip bs yss
    where (as, bs) = splitAt (length ys) xs
innerZip xs (ys:yss) = zip as ys : innerZip bs yss
    where (as, bs) = splitAt (length ys) xs