I also think that having backwards compatability is not much of an issue. After all, ghc has introduces a number of not backward compatable changes to haskell, and I never heard any complaints.
Oh no?
Implicit parameters: I'm sure it is a great thing, but I'd already used the (?) operator, and need -fglasgow-exts. Now my program depends on a bunch of well places spaces to compile.
Template Haskell: really cool new feature, which just happens to use a syntax that overlaps with the list comprehension syntax.
And now, let's just screw any backwards compatibility, and re-engineer the records system¹.
We at GHC HQ agree, and for future extensions we'll move to using separate options to enable them rather than lumping everything into -fglasgow-exts. This is starting to happen already: we have -farrows, -fwith, -fffi (currently implied by -fglasgow-exts). Of course, if we change the language that is implied by -fglasgow-exts now, we risk breaking old code :-) Would folk prefer existing syntax extensions be moved into their own flags, or left in -fglasgow-exts for now? I'm thinking of: - implicit parameters - template haskell - FFI - rank-N polymorphism (forall keyword) - recursive 'do' (mdo keyword) Cheers, Simon