data As = <a>(Any)*;
data Bs = <b>(Any)*;

zip( $, $ ) = $;
zip( <a>(x).as :: As, $ ) = $;
zip(<a>(x).as :: As, <b>(y).bs::Bs) = 
 <a>(x). <b>(y).zip(as,bs);
