I'm new to mozart oz and I have this problems to solve:
a) Implement a function Zip that takes a pair Xs#Ys of two lists Xs and Ys (of the
same length) and returns a pairlist, where the first field of each pair is taken
from Xs and the second from Ys. For example, {Zip [a b c]#[1 2 3]} returns the
pairlist [a#1 b#2 c#3].
b) The function UnZip does the inverse, for example {UnZip [a#1 b#2 c#3]}
returns [a b c]#[1 2 3]. Give a specification and implementation of UnZip.
All I know is that #
is a label of some sort which composes a pair/tuple, taken from the docs, but I couldn't find an example that illustrates how to work with it.
My question is how to split it to get the items or how to work with that label (or any source that might have an example of how to work with it).
I've done a little bit of search and I arrived at this piece of code (I don't know if it's even correct syntactically):
declare
fun {Zip L}
case L of nil then nil
[] L1#L2 then .... % Here i'm stuck or i don't know how to proceed
end
end
{Browse {Zip ['a' 'b' 'c']#[1 2 3]}}
Any help will be appreciated.
Thanks for your time.