
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
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