GHC2021 extensions should be sufficient for early intermediate Haskellers

Hi all, In thinking about how I feel about TypeFamilies (and why I lean against inclusion), I realized I had a new criterion: * GHC2021 extensions should be sufficient for early-intermediate Haskellers Today, users have to enable a number of extensions just to get basic work done (I'm looking at you, FlexibleContexts). So they learn just to take whatever suggestion is presented to them in an error message and apply it. But if extensions were considered more exotic, then users might not be so willing to add an extension. They would have to consider whether they really want to opt into more challenging error messages and a wider horizon. TypeFamilies is an extension that significantly widens the horizon, but also invites new scary error messages. I think it should be opt in. But this gatekeeping works only if users will be thoughtful about enabling the extension; thus my new criterion. What do we think about this? (I thought of putting this on Kialo, but it didn't seem to fit the setup there. Maybe I've erred in not just blasting ahead.) Richard

Hi Am Dienstag, den 15.12.2020, 21:21 +0000 schrieb Richard Eisenberg:
* GHC2021 extensions should be sufficient for early-intermediate Haskellers
with sufficient, do you mean With GHC2021, early-intermediate Haskellers won’t have to enable any other extension. That is an interesting proposal. I worry that it is a hard criteria to evaluate, harder than “harmless and uncontentious”, as everybody has different opinions about what an intermediate Haskeller is, and to some it includes extensions that others don’t think of as harmless or uncontentious. In fact, doesn’t that mean to explicitly compromise on either the harmless or the uncontentious criteria? (If it weren’t, we wouldn’t need to propose a new criteria). Maybe a bit related, but as we discuss refining criteria, I wonder if we are implicitly applying the following criteria, and if we do, if we really should: GHC2021 should be educative of best practices and good style. (I worded it intentionally a bit tendentious). We have extensions that are already perfectly guarded by their own syntax (e.g. UnicodeSyntax, RecordWildCards), so by construction enabling the extension is harmless – the only effect of not enabling the extension is to add friction for those who want to use the extension, thus saying “yes, it’s there, but we want to nudge you not to use them”. Is that something we really want to do here? (I find that sentiment a bit patronizing.) There might be other arguments for exclusion, such as “readers need a loud warning to watch out for uses of this feature” (which could maybe applies to RecordWildCards, but probably not for UnicodeSyntax).
(I thought of putting this on Kialo, but it didn't seem to fit the setup there. Maybe I've erred in not just blasting ahead.)
It would probably work well as a new top-level thesis, next to the individual extensions, maybe worded as “Every extension needed by intermediate Haskellers” Cheers, Joachim -- Joachim Breitner mail@joachim-breitner.de http://www.joachim-breitner.de/

I don't agree with this sentiment at all, to be honest. In my opinion, the
ultimate fate of every extension is to be rolled into the standard or to be
relegated to the bins of history. The idea of having various levels of
languages based on how advanced they are perceived to be sounds
extraordinary to me (also quite a bit patronising).
Generally speaking, you opt in to a feature by using it. GHC2021 should not
have features that we, as a community, don't recommend using (the
bins-of-history ones); but, surely, TypeFamilies is not one of these. It is
not to say that GHC2021 should have TypeFamilies, but that them being
perceived as advanced is not, in my opinion, a relevant criterion. We
should be asking, instead, whether it is ready.
On Tue, Dec 15, 2020 at 10:22 PM Richard Eisenberg
Hi all,
In thinking about how I feel about TypeFamilies (and why I lean against inclusion), I realized I had a new criterion:
* GHC2021 extensions should be sufficient for early-intermediate Haskellers
Today, users have to enable a number of extensions just to get basic work done (I'm looking at you, FlexibleContexts). So they learn just to take whatever suggestion is presented to them in an error message and apply it.
But if extensions were considered more exotic, then users might not be so willing to add an extension. They would have to consider whether they really want to opt into more challenging error messages and a wider horizon. TypeFamilies is an extension that significantly widens the horizon, but also invites new scary error messages. I think it should be opt in. But this gatekeeping works only if users will be thoughtful about enabling the extension; thus my new criterion.
What do we think about this?
(I thought of putting this on Kialo, but it didn't seem to fit the setup there. Maybe I've erred in not just blasting ahead.)
Richard _______________________________________________ ghc-steering-committee mailing list ghc-steering-committee@haskell.org https://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-steering-committee

On Thu, 17 Dec 2020 at 08:15, Spiwack, Arnaud
I don't agree with this sentiment at all, to be honest. In my opinion, the ultimate fate of every extension is to be rolled into the standard or to be relegated to the bins of history. The idea of having various levels of languages based on how advanced they are perceived to be sounds extraordinary to me (also quite a bit patronising).
Generally speaking, you opt in to a feature by using it. GHC2021 should not have features that we, as a community, don't recommend using (the bins-of-history ones); but, surely, TypeFamilies is not one of these. It is not to say that GHC2021 should have TypeFamilies, but that them being perceived as advanced is not, in my opinion, a relevant criterion. We should be asking, instead, whether it is ready.
I strongly agree with Arnuad here. Cheers Simon
On Tue, Dec 15, 2020 at 10:22 PM Richard Eisenberg
wrote: Hi all,
In thinking about how I feel about TypeFamilies (and why I lean against inclusion), I realized I had a new criterion:
* GHC2021 extensions should be sufficient for early-intermediate Haskellers
Today, users have to enable a number of extensions just to get basic work done (I'm looking at you, FlexibleContexts). So they learn just to take whatever suggestion is presented to them in an error message and apply it.
But if extensions were considered more exotic, then users might not be so willing to add an extension. They would have to consider whether they really want to opt into more challenging error messages and a wider horizon. TypeFamilies is an extension that significantly widens the horizon, but also invites new scary error messages. I think it should be opt in. But this gatekeeping works only if users will be thoughtful about enabling the extension; thus my new criterion.
What do we think about this?
(I thought of putting this on Kialo, but it didn't seem to fit the setup there. Maybe I've erred in not just blasting ahead.)
Richard _______________________________________________ ghc-steering-committee mailing list ghc-steering-committee@haskell.org https://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-steering-committee
_______________________________________________ ghc-steering-committee mailing list ghc-steering-committee@haskell.org https://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-steering-committee
participants (4)
-
Joachim Breitner
-
Richard Eisenberg
-
Simon Marlow
-
Spiwack, Arnaud