[ghc-steering-committee] Language Extension Policy – Round 2
Adam Gundry
adam at well-typed.com
Mon May 1 12:59:00 UTC 2023
Thanks, I think I'm beginning to understand the position more clearly
now. I can see the argument that we should be more opinionated about
presenting features as one of
* recommended (part of the language, fairly stable);
* experimental (not yet resolved one way or the other); or
* discouraged (supported primarily for backwards compatibility).
To some extent GHC2021 already acts as a recommendation, but there are
still many extensions that it doesn't include, and it doesn't draw a
line between "experimental" and "discouraged". So perhaps one path
forward would be to try to expand the set of extensions in the next
GHC20xx and at the same time try to be more explicit about "discouraged"
extensions that are unlikely to make it into a future GHC20xx iteration?
I'm worried, however, that there are in practice many "dialects" of
Haskell and hence it may be difficult to establish consensus about how
to categorise many extensions.
GHC2021 is described in the user's guide as "stable and conservative".
Should we instead aim for "stable and liberal", i.e. adding extensions
when they are unlikely to change and are useful to some people, even if
others dislike them? (For example, RecordWildCards might fit into this
category.) That would move us towards "one big language", but I'm not
yet wholly convinced that is desirable. After all it would make the
"recommended" language bigger and more complicated, and potentially
constrain future evolution in ways that are hard to predict now.
I think all this is mostly separable from the mechanics of warnings vs
LANGUAGE pragmas vs other compiler flags. The idea that we might replace
`-XNoFoo` with `-Werror=foo` is (for me at least) a distraction from the
main point. (Thus, concretely, I still argue we should accept #536.)
Cheers,
Adam
On 01/05/2023 03:05, Richard Eisenberg wrote:
>
>
>> On Apr 28, 2023, at 7:20 AM, Joachim Breitner
>> <mail at joachim-breitner.de <mailto:mail at joachim-breitner.de>> wrote:
>>
>> I believe [the idea about using warnings] was Richard’s.
>
> I indeed have been the one to advocate for this previously, and I still do.
>
> I think the current system of extensions presents a bewildering array of
> complexity to users, and (I claim) a big source of why people say
> Haskell is so complicated. Haskell, at its core, is beautifully simple!
> But this fact easily gets lost.
>
> So my goal in advocating using warnings is to try to reduce the number
> of language extensions. We would then have one big language, but users
> have ways of subsetting if they like. In some sense, this is just about
> marketing (it doesn't change expressiveness) but marketing is important.
> It would be easy to interpret existing -X flags as warning twiddles, so
> the idea is backward compatible.
>
> Richard
--
Adam Gundry, Haskell Consultant
Well-Typed LLP, https://www.well-typed.com/
Registered in England & Wales, OC335890
27 Old Gloucester Street, London WC1N 3AX, England
More information about the ghc-steering-committee
mailing list