
On Mon, Mar 24, 2014 at 10:44 AM, Mark Lentczner
On Mon, Mar 24, 2014 at 7:28 AM, Brandon Allbery
wrote: 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.
This is unworkable. How much conditional code do you want library writers to have to have? Library writers strive to have code which works with n prior releases where n is commonly 3. Having code that works with 7.6, 7.8, and 7.10 would be a nighmare!
No? Immediately switching to nominal requires those annotations immediately. No immediate change is needed if we keep the current default; if you have problems with conditional code, you will have them no matter what with roles --- the only question is when. Also see SPJ's response.
On Mon, Mar 24, 2014 at 7:32 AM, Brandon Allbery
wrote: perhaps there should be some mechanism to specify to ghc 7.8 whether a
compile should default to representational or nominal so that authors have a way to test their code / look for problems.
Also unworkable... now we need a conditional flag for the state of the default so the code can
be written to work with either based on a GHC flag? And how is that
supposed to work with
Nope; in fact, code containing this flag should be rejected by hackage the same way some other options are rejected. It exists ONLY to help library authors with the transition, and should never be used with released code, only for maintainer debugging/testing. It would be nice if it could be forced to only work in sandboxes, but that would require a rather unhealthy level of ghc / cabal-install interaction. I expect such testing will end up requiring hsenv. There's just no good way of handling this whole role annotations thing; it's a massive sledgehammer. -- brandon s allbery kf8nh sine nomine associates allbery.b@gmail.com ballbery@sinenomine.net unix, openafs, kerberos, infrastructure, xmonad http://sinenomine.net