
On 10/06/15 21:50, wren romano wrote:
On Thu, Jun 4, 2015 at 11:43 PM, Edward Z. Yang
wrote: GHC used to always generalize let-bindings, but our experience with GADTs lead us to decide that let should not be generalized with GADTs. So, it's not like we /wanted/ MonoLocalBinds, but that having them makes the GADT machinery simpler.
This blog post gives more details on the matter: https://ghc.haskell.org/trac/ghc/blog/LetGeneralisationInGhc7
The fact that -XGADTs (in isolation) implies -XMonoLocalBinds isn't the problem. The problem is, the order in which language pragma are offered should not matter. Whether I say {-# LANGUAGE GADTs, NoMonoLocalBinds #-} or {-# LANGUAGE NoMonoLocalBinds, GADTs #-} shouldn't matter. Both should mean the same thing, regardless of how annoying it may be to work in that language.
The current behavior may be surprising if you are not aware of it, but it's the only sensible one. Otherwise, what should the meaning of {-# LANGUAGE MonoLocalBinds, NoMonoLocalBinds #-} be? Roman