The zip namespace currently contains 3 functions for creating a zipper: `seq-zip`, `vector-zip` and `xml-zip`. These tend to expose the implementation details instead of exposing a user to just the specification details.
A zip2 namespace that dispatches on the type, which allows curtailing the implementation details. A new zip namespace (in zip2) is proposed instead of retrofitting the protocol in the existing zip namespace in the interest of not making breaking changes by removing the existing functions. zip2 consists of a protocol to create a zipper based on the type and will be an additive API built on top of the existing zip.
Is a new namespace (zip2) the best way to go about this change? How do I retrofit this change in the existing zip namespace without making any breaking changes (the breaking change here being the removal of the existing functions that are used to create a zipper)?
I expected something like
Tying those impls to concrete types is bad b/c someone else might want different impls for the same type.
If this was the goal, I don't think it's a good one.
I don't think this makes sense.