Just thought of something that might help to deal with dependency nuisance:

What if the top package (in namespace)  contained major version?

E.g. Cabal_1_22

below packages might use minor versions - basically, whenever api changes, change the version part of the affected package.

Here by package I mean part of the namespace.

This way, different versions could coexist quite painlessly..

?