On Fri, Mar 14, 2014 at 9:12 AM, Johan Tibell <johan.tibell@gmail.com> wrote:
On Fri, Mar 14, 2014 at 2:00 PM, Brandon Allbery <allbery.b@gmail.com> wrote:
On Fri, Mar 14, 2014 at 5:36 AM, Johan Tibell <johan.tibell@gmail.com> wrote:
I'm quite worried about this change though. I thought the default role for 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.

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.

True, but shouldn't coerce be called unsafeCoerce then as it is, in fact, unsafe from a correctness perspective?

My expectation would be that 7.8 keeps the old behavior while enabling the new, and possibly issues a warning when newtype deriving is used with no role annotations; this gives us a release cycle to get role annotations in place before making the new safe behavior default.

--
brandon s allbery kf8nh                               sine nomine associates
allbery.b@gmail.com                                  ballbery@sinenomine.net
unix, openafs, kerberos, infrastructure, xmonad        http://sinenomine.net