Chris Spencer has submitted a fantastic patch that irons out most of the issues present with assoc/dissocing heterogeneous collections, including merges.
Here's a taste of what's currently possible.
It's been written in such a way to help implement update-in/assoc-in, and Assoc/Dissoc at the type level in the future. For example, this will enable types like (All [m] [m -> (Assoc m :a Number)]).