
On Mon, Mar 24, 2014 at 10:14 AM, Mark Lentczner
On Fri, Mar 14, 2014 at 2:36 AM, Johan Tibell
wrote: I'm quite worried about this change though. I thought the default rolefor data type was nominal, as that's the safe default. *If the default is representational, every package author will need to be aware of this feature and update their packages.* That's quite a high cost.
On Fri, Mar 14, 2014 at 6:00 AM, Brandon Allbery
wrote: *Nominal default breaks everything that uses newtype deriving and doesn't
have role annotations, doesn't it?* Representational default means things behave in 7.8 as they did in earlier GHCs.
Am I reading these pair of statements correctly? It seems to imply to me that *every* parameterized type that uses a type constraint on a parameter *must* be reviewed and possibly annotated to work correctly, one way or the other!
No; if the default is representational, everything works as it did in earlier versions, potential bugs/unsafety and all. If the default is immediately switched to nominal, *then* every affected type must be reviewed immediately. My counter-proposal was to have 7.8 default to representational to give library maintainers a release cycle to add the necessary annotations, then switch the default to nominal in 7.10 to get the additional safety. -- brandon s allbery kf8nh sine nomine associates allbery.b@gmail.com ballbery@sinenomine.net unix, openafs, kerberos, infrastructure, xmonad http://sinenomine.net