Well you can do so in theory at runtime, but you dont have any type checks or other compiler support for what you are doing.
But I don't agree that the problem is not plausible, in functional languages like Haskell, Ocaml, etc. Zip and unzip are two of the most basic functions. It may not make as much sense with arrays due to the overhead of creating new arrays and copying everything over, so in non functional languages like Java you usually see such functionality be implemented on streams or iterators not arrays directly. But the problem itself is very plausible and such functions can be really useful. Imagine you get information from two sources, e.g. two files and you have a function that needs to combine both records at the same time. You could write one monster function that parses two files simultaneously, or you could write two small functions one for each file and zip their results together