
On Tue, Jan 20, 2015 at 3:45 AM, Edward Kmett
Ultimately, there is, of course, a balancing act between flexibility and inference.
I can at least say that the incident rate for cases seems to be very low, especially when it is contrasted against the pain users have had with using the existing Foldable/Traversable imports where virtually everything in them collided with less useful versions of the same combinator (e.g. mapM) from the Prelude that a dozen other modules (e.g. Control.Monad and virtually every module in mtl) insisted on re-exporting, making it a game of whack-a-mole to try to hide them.
For the record, it took me almost an hour to update attoparsec to fix all the various regressions, or to put it more charitably changes, introduced in GHC 7.10. I have twenty-something other packages to go through. I don't keep track of the time sunk from release to release, but this feels somewhat worse than average. Basically, the more careful you are in writing a package, the more each update of GHC and base costs in nickel-and-dime tweaks to keep a build clean. It's not a very happy-making feedback loop. "Be a good citizen, and your reward is to spend *even more* time cleaning up!"