
I don't really care one way or the other how this is resolved, but does it
strike anyone else that current practices must be remarkably fragile for
such a minor change (which doesn't even change exported names!) to
supposedly cause so much breakage?
John L.
On Tue, May 6, 2014 at 2:30 PM, Edward Kmett
It may make the code in transformers a bit more confusing for a handful of instances, but this is breaking almost every user I've talked to.
This is proving to be a major breaking change as users commonly import StateT(..) and go off and use runStateT, etc.
I wrote the imports in mtl 2.2 in such a way that if you recanted and chose to switch back to the old style, it'd still work.
I just know that I personally have 200+ modules to change as a result, for no better experience as a user.
-Edward
On Wed, May 7, 2014 at 3:18 AM, Ross Paterson
wrote: On Tue, May 06, 2014 at 07:16:40PM +0300, Michael Snoyman wrote:
One of the changes[1] in transformers 0.4 is as follows:
0.3:
newtype Identity a = Identity { runIdentity :: a }
0.4:
newtype Identity a = Identity a runIdentity (Identity x) = x
While this may seem benign, I've already seen three cases where this caused breakage[2][3][4].
Is there a reason for this change in 0.4? If not, I'd like to request moving back to the previous formulation to avoid unnecessary breakage.
Read and Show instances were introduced in 0.4. With the record form, the default instances for those classes would be very cumbersome. The alternative of defining custom instances that differ from the default ones would make the interface more confusing. _______________________________________________ Libraries mailing list Libraries@haskell.org http://www.haskell.org/mailman/listinfo/libraries
_______________________________________________ Libraries mailing list Libraries@haskell.org http://www.haskell.org/mailman/listinfo/libraries