[ghc-steering-committee] Language Extension Policy – Round 2

Eric Seidel eric at seidel.io
Thu Apr 27 14:11:42 UTC 2023


On Thu, Apr 27, 2023, at 04:09, Simon Peyton Jones wrote:
> The thing about warnings is different.  I think you are suggesting that 
> we should:
>  • Remove (say) MultiParamTypeClasses as an extension
>  • Accept programs that use MultiParamTypeClasses unconditionally
>  • But with a warning
>  • That can be suppressed with -fno-warn-multi-param-type-classes
> So a long {-# LANGUAGE X1, X2 #-} preamble will be replace with a long 
> {-# OPTIONS_GHC -fno-warn-X1 -fno-warn-X2 #-} block.

I can't speak for Simon, but I felt similarly about Extensions vs Warnings. What you're saying here is not quite what I had in mind. For me it's more like

>  • Remove (say) MultiParamTypeClasses as an extension
>  • Accept programs that use MultiParamTypeClasses unconditionally
>  • If you want to disallow MPTCs, you can disable them with `-Wmulti-param-type-classes -Werror`

In other words, MPTCs are simply part of the language now. Not a second class citizen that must be opted into with an Extension or by *disabling* a Warning. We leave an escape hatch in the form of an opt-in warning for those who would rather not use MPTCs, much like other aspects of the language the may be controversial.


More information about the ghc-steering-committee mailing list