Revise/remove custom mapM implementation for lists
Recently, Simon Marlow asked why the list instance for Traversable had a custom mapM implementation that used the Monad operations. Having looked a bit, I don't think there's any good reason. The only fusion that the custom mapM can participate in is due to it being written as foldr, but traverse is, as well. So as long as mapM = traverse is able to inline appropriately, there should be no difference.
Further, this can be changed, in principle, for 7.10.2. It doesn't change any types, only the implementation.
mapM = traverse is the class default definition, so this could possibly be completed by just removing the custom definition.
Link to the libraries thread: https://mail.haskell.org/pipermail/libraries/2015-May/025708.html