I don’t really understand how
MonoLocalBinds got 48 ‘no’ votes while
GADTs (which implies
MonoLocalBinds) only got 26 ‘no’ votes.
MonoLocalBinds is such a specific extension that I would expect everyone who votes against it to know about its connection to
GADTs. Or are these people really advocating for using
For those who are out of the loop, here’s a video from Richard Eisenberg about the reasoning behind
I feel like a many of the people who vote for
GADTs but not
MonoLocalBinds are blissfully unaware of these pitfalls of
GADTs. Of course maybe many people just didn’t want to take the time to fill out all the options and just chose a few of the most notable extensions that they would like to see.
Honestly, I’d say that there are a few extension I do undestand well: syntactic sugar ones (
MultiwayIf, …) and simple things like
PatternSynonims, … Anything releated with the type system is kind of a mistery, If I ever use them is because the compiler says
Hey! you need to enable CreepyTypeLevelMorphisimSkolemWeAreTerribleAtNaming extension
Don’t get me wrong, I do have a shallow understanding of some of them but they are more of a “I want my code to compile” than “I want this typelevel feature which I actaully understand”-
Now, considering that 50% of the responses come from people with less than 5 years of experience, and 35%; less than 3 years. How many responsers do you think that actually understand all the
GADTs quirks? (I don’t fully understand them by the way)
The whole extension jungle is a mess… and sorry for the small rant hahaha
Perhaps a significant number of people vote “no” for extensions they haven’t heard of or don’t understand (and hence assume should be disabled by default)? I think it is relatively likely that some people will know enough about
GADTs to want them enabled by default, without understanding that
MonoLocalBinds should come too.
Interesting bits in my opinion:
- ghcup taking the crown;
- comparing libraries, profiling and — emh — finding jobs still difficult;
- less people using stack.
The question was what should be enabled by default - I read it as what should be there without me having to add it to .cabal or the .hs files header.
I certainly voted GADTs without MonoLocalBinds and the reason is simple: I use GADTs quite often but I cannot remember a single instance where I used MonoLocalBinds (without GADTs).
The “no” was not “I don’t want to enable that extension” - it was “I’m fine to add this if I ever need exactly this”
- GHC upgrades breaking more of people’s code
- GHCJS userbase dropped by almost 50%
- 9.2.x getting more adoption, but still 41% on 8.10.x
LambdaCase was ranked top and finally got the place it deserves.
I still do not know how it happened that it did not enter GHC2021, that committee had a strange taste…
I believe the
\cases proposal is also implemented in the upcoming 9.6, so it will be even more useful.