I don't want GADTs to on by default, because pattern matching on them does not work the same as with normal data types (i.e., you often need to have an explicitly type signature, or be aware of GHC type checking algorithm to know when a type signature is not needed). So I'd like to be able to see explicitly that GADTs might be in play.
For what it's worth, you can pattern-match on GADTs with GADTs off (but then you need TypeFamilies on, which still seems to be on its way to GHC2021 (though see Richard's “a few more pleas”)).
> :set -XGADTs
> data T a where { MkT :: T Int }
> :set -XNoGADTs
> :set -XTypeFamilies
> f :: T a -> a; f MkT = 0
I really see very little reason to not add GADTs (except MonoLocalBind, maybe, see Richard's email again, but it applies to TypeFamilies too).