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 GADTs
without MonoLocalBinds
?
For those who are out of the loop, hereās a video from Richard Eisenberg about the reasoning behind MonoLocalBinds
:
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 (LambdaCase
, MultiwayIf
, ā¦) and simple things like OverloadedXXXX
, 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 MonoLocalBinds
and 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ā
Also:
- 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.