better zipA implementation: copy from standard lib