<html><body>
<div dir="ltr">
Joachim, I love your statistics :) And I think I’m less sad that you made it look: I think that NullaryTypeClasses is implied by MultiParamTypeClasses, and that MonadFailDesugaring is already (or is going to be) the default in GHC! :P</div><div dir="ltr"><br></div><div dir="ltr">To get some more discussion, I would be very happy to hear reasons for and against:</div><div dir="ltr"><br></div><div dir="ltr">- GADTs:</div><div dir="ltr"> - Stable and well documented,</div><div dir="ltr"> - Adding indices to types is one of the main reasons one would like to have MultiParamTypeClasses and TypeFamilies on,</div><div dir="ltr"> - I find the GADT syntax much nicer (but this is an extremely personal choice.)</div><div dir="ltr"><br></div><div dir="ltr">- RankNTypes:</div><div dir="ltr"> - I originally voted “no”, because I find it to be part of “advanced Haskell”, and because using it may be complicated without ImpredicativeTypes on,</div><div dir="ltr"> - On the other hand, it’s also been in GHC for ages.</div><div dir="ltr"><br>
<div class="gmail_quote">
<div dir="ltr" class="gmail_attr">On 3 Dec 2020 at 10:31:18, Joachim Breitner <<a href="mailto:mail@joachim-breitner.de">mail@joachim-breitner.de</a>> wrote:<br></div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<div>
Dear Committee,<br><br><br>we have 9 votes in. Dear Cale and Eric, can we have your votes please?<br><br>As always, the table<br><a href="https://github.com/ghc-proposals/ghc-proposals/blob/ghc2021/proposals/0000-ghc2021.rst#data">https://github.com/ghc-proposals/ghc-proposals/blob/ghc2021/proposals/0000-ghc2021.rst#data</a><br>has the current data.<br><br>We had the most discussion so far about:<br><br> * The innnocence of PostfixOperators<br> * The effect of UnicodeSyntax on error messages<br> * Whether InstanceSigs is a good design<br> * Whether OverloadedString is harmless enough.<br><br>I see that three is less clear signal on odd extensions that are<br>obsolete, on by default, implied by others etc. That’s probably fine<br>and no need to worry; some of them will be resolved by virtue of being<br>implied by others. We can also sanity-check the final result, and<br>include all implied ones in the final design.<br><br>So where do we stand?<br><br>Applying the actual quota of ⅔ out of 11, i.e. 8 votes, these would go<br>in no matter how Cale and Eric vote:<br><br> BangPatterns, BinaryLiterals, ConstraintKinds, DeriveDataTypeable,<br> DeriveFoldable, DeriveFunctor, DeriveGeneric, DeriveLift,<br> DeriveTraversable, EmptyCase, EmptyDataDecls, EmptyDataDeriving,<br> ExplicitForAll, FlexibleContexts, FlexibleInstances, GADTSyntax,<br> HexFloatLiterals, ImportQualifiedPost, KindSignatures,<br> MultiParamTypeClasses, NamedFieldPuns, NumericUnderscores,<br> StandaloneDeriving, ViewPatterns<br><br>The following have 6 or 7 votes, i.e. they’d go in if we extrapolate<br>from the current votes:<br><br> ConstrainedClassMethods, DerivingStrategies,<br> ExistentialQuantification, GeneralisedNewtypeDeriving, InstanceSigs,<br> NegativeLiterals, PostfixOperators, RankNTypes, RecordWildCards,<br> ScopedTypeVariables, TupleSections, TypeApplications, TypeFamilies,<br> TypeOperators, TypeSynonymInstances<br><br> These extensions are short one vote:<br><br> DataKinds, DerivingVia, GADTs, LambdaCase, PolyKinds<br><br><br><br> So how sad would we all be? This is the sadness report for each<br> committee member, showing the symmetric difference between their ballot<br> and the (extrapolated) result.<br><br><br> alejandro<br> would miss:<br> DataKinds, DerivingVia, GADTs, LambdaCase, MonadFailDesugaring,<br> NamedWildCards, NoMonomorphismRestriction, NullaryTypeClasses,<br> NumDecimals, OverloadedLists, OverloadedStrings, PolyKinds,<br> StandaloneKindSignatures<br> doesn’t want:<br> RankNTypes<br><br> arnaud<br> would miss:<br> Arrows, ExplicitNamespaces, ForeignFunctionInterface,<br> FunctionalDependencies, GADTs, MonadFailDesugaring, MonoLocalBinds,<br> PartialTypeSignatures, StarIsType, TypeFamilyDependencies<br> doesn’t want:<br> ExistentialQuantification, ImportQualifiedPost, InstanceSigs,<br> NamedFieldPuns, RankNTypes, RecordWildCards, ScopedTypeVariables,<br> TupleSections, TypeSynonymInstances<br><br> iavor<br> would miss:<br> BlockArguments, MultiWayIf, NoMonomorphismRestriction,<br> NullaryTypeClasses, OverloadedStrings, ParallelListComp, RecursiveDo<br> doesn’t want:<br> ConstrainedClassMethods, ConstraintKinds, DeriveFoldable,<br> DeriveFunctor, DeriveTraversable, DerivingStrategies, EmptyCase,<br> GADTSyntax, GeneralisedNewtypeDeriving, InstanceSigs, KindSignatures,<br> NegativeLiterals, PostfixOperators, TupleSections, TypeApplications,<br> TypeFamilies, TypeOperators<br><br> joachim<br> would miss:<br> DataKinds, DerivingVia, ForeignFunctionInterface, GADTs, LambdaCase,<br> MonoLocalBinds, NamedWildCards, NondecreasingIndentation,<br> RoleAnnotations, StarIsType, UnicodeSyntax, UnliftedFFITypes,<br> UnliftedNewtypes<br> doesn’t want:<br> ConstrainedClassMethods, ScopedTypeVariables, TypeSynonymInstances<br><br> richard<br> would miss:<br> BlockArguments, DefaultSignatures, DerivingVia,<br> DisambiguateRecordFields, ExplicitNamespaces, LexicalNegation,<br> NamedWildCards, NumDecimals, ParallelListComp, PolyKinds,<br> RoleAnnotations, StandaloneKindSignatures, TemplateHaskellQuotes,<br> UnicodeSyntax, UnliftedNewtypes<br> doesn’t want:<br> NegativeLiterals, RecordWildCards, ScopedTypeVariables, TypeFamilies<br><br> simonm<br> would miss:<br> DataKinds, DefaultSignatures, ForeignFunctionInterface, GADTs,<br> LambdaCase, LiberalTypeSynonyms, MonoLocalBinds, MultiWayIf,<br> NoMonomorphismRestriction, NondecreasingIndentation, NumDecimals,<br> OverloadedStrings, PatternSynonyms, PolyKinds, UnicodeSyntax<br> doesn’t want:<br> DeriveLift, DerivingStrategies, NumericUnderscores, TypeApplications,<br> TypeOperators, ViewPatterns<br><br> spj<br> would miss:<br> MonoLocalBinds, NoMonomorphismRestriction, NullaryTypeClasses,<br> OverloadedLists, OverloadedStrings, ParallelListComp, PolyKinds,<br> RecursiveDo, RoleAnnotations, StandaloneKindSignatures, StarIsType<br> doesn’t want:<br> DerivingStrategies, GeneralisedNewtypeDeriving, NegativeLiterals,<br> RecordWildCards, TupleSections, TypeFamilies<br><br> tom<br> would miss:<br> BlockArguments, DataKinds, DefaultSignatures, DerivingVia,<br> DisambiguateRecordFields, DuplicateRecordFields, ExplicitNamespaces,<br> FunctionalDependencies, LambdaCase, LexicalNegation,<br> LiberalTypeSynonyms, MagicHash, MultiWayIf, NamedWildCards,<br> NullaryTypeClasses, NumDecimals, PackageImports, ParallelListComp,<br> PolyKinds, QuasiQuotes, RoleAnnotations, StandaloneKindSignatures,<br> TemplateHaskell, TemplateHaskellQuotes, TypeFamilyDependencies,<br> UnboxedSums, UnboxedTuples, UnicodeSyntax, UnliftedNewtypes<br> doesn’t want:<br> none!<br><br> vitaly<br> would miss:<br> DataKinds, DerivingVia, GADTs, LambdaCase, MonadFailDesugaring,<br> StarIsType<br> doesn’t want:<br> ConstrainedClassMethods, ExistentialQuantification, PostfixOperators<br><br><br> -- <br> Joachim Breitner<br> <a href="mailto:mail@joachim-breitner.de">mail@joachim-breitner.de</a><br> <a href="http://www.joachim-breitner.de/">http://www.joachim-breitner.de/</a><br><br><br>_______________________________________________<br>ghc-steering-committee mailing list<br><a href="mailto:ghc-steering-committee@haskell.org">ghc-steering-committee@haskell.org</a><br><a href="https://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-steering-committee">https://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-steering-committee</a><br>
</div>
</blockquote>
</div>
</div>
</body></html>