<div dir="ltr">Hi, <div><br></div><div>Following the discussions I've decided to update my vote:</div><div><br></div><div>-- Updates:</div><div>ConstrainedClassMethods: yes<br></div><div><div>ForeignFunctionInterface: yes<br></div><div>NamedWildCards: yes<br></div><div>OverloadedLists: yes<br>OverloadedStrings: yes<br></div><div>PolyKinds: yes<br></div><div>PostfixOperators: yes<br></div><div>MonoLocalBinds: yes<br></div><div><br></div><div>-- The rest goes without changes</div><div>-- Definitely 'yes'<br><br>InstanceSigs: yes<br>-- I have a special feeling about this one,<br>-- it is extremely helpful when teaching<br><br>BangPatterns: yes<br>BinaryLiterals: yes<br>NegativeLiterals: yes<br>HexFloatLiterals: yes<br>NumericUnderscores: yes<span class="gmail-im" style="color:rgb(80,0,80)"><br>DeriveDataTypeable: yes<br>DeriveFoldable: yes<br>DeriveFunctor: yes<br>DeriveGeneric: yes<br>DeriveLift: yes<br>DeriveTraversable: yes<br>DerivingStrategies: yes<br></span>DerivingVia: yes<br>GeneralisedNewtypeDeriving: yes<span class="gmail-im" style="color:rgb(80,0,80)"><br>EmptyCase: yes<br>EmptyDataDecls: yes<br>EmptyDataDeriving: yes<br></span>ExplicitForAll: yes<br>ConstraintKinds: yes<br>DataKinds: yes<span class="gmail-im" style="color:rgb(80,0,80)"><br>FlexibleContexts: yes<br>FlexibleInstances: yes<br>GADTSyntax: yes<br></span>GADTs: yes<br>ImportQualifiedPost: yes<br>MultiParamTypeClasses: yes<br>NamedFieldPuns: yes<br>RankNTypes: yes<br>RecordWildCards: yes<br>ScopedTypeVariables: yes<br>StandaloneDeriving: yes<br>StarIsType: yes<span class="gmail-im" style="color:rgb(80,0,80)"><br>TupleSections: yes<br>TypeApplications: yes<br>TypeFamilies: yes<br></span>TypeOperators: yes<br>TypeSynonymInstances: yes<br>ViewPatterns: yes<br>KindSignatures: yes<br>LambdaCase: yes<br>MonadFailDesugaring: yes<br><br><br><br>-- Not now<span class="gmail-im" style="color:rgb(80,0,80)"><br><br>AllowAmbiguousTypes: no<br>ApplicativeDo: no<br>Arrows: no<br>BlockArguments: no<br>CApiFFI: no<br>CPP: no<br></span>CUSKs: no<br>DatatypeContexts: no<br>DefaultSignatures: no<br>DeriveAnyClass: no<br>DisambiguateRecordFields: no<br>DuplicateRecordFields: no<br>ExistentialQuantification: no<br>ExplicitNamespaces: no<br>ExtendedDefaultRules: no<br>FunctionalDependencies: no<br>GHCForeignImportPrim: no<span class="gmail-im" style="color:rgb(80,0,80)"><br>ImplicitParams: no<br>ImpredicativeTypes: no<br>IncoherentInstances: no<br></span>InterruptibleFFI: no<br>LexicalNegation: no<span class="gmail-im" style="color:rgb(80,0,80)"><br>LiberalTypeSynonyms: no<br>LinearTypes: no<br>MagicHash: no<br>MonadComprehensions: no</span><br>MultiWayIf: no<br>NPlusKPatterns: no<br>NoImplicitPrelude: no<span class="gmail-im" style="color:rgb(80,0,80)"><br>NoMonomorphismRestriction: no<br>NoPatternGuards: no<br>NoTraditionalRecordSyntax: no<br></span>NondecreasingIndentation: no<br>NullaryTypeClasses: no<br>NumDecimals: no<br>OverlappingInstances: no<span class="gmail-im" style="color:rgb(80,0,80)"><br>OverloadedLabels: no<br></span>PackageImports: no<br>ParallelListComp: no<br>PartialTypeSignatures: no<br>PatternSynonyms: no<br>QualifiedDo: no<br>QuantifiedConstraints: no<br>QuasiQuotes: no<br>RebindableSyntax: no<span class="gmail-im" style="color:rgb(80,0,80)"><br>RecursiveDo: no<br>RoleAnnotations: no<br>Safe: no<br></span>StandaloneKindSignatures: no<span class="gmail-im" style="color:rgb(80,0,80)"><br>StaticPointers: no<br>Strict: no<br>StrictData: no<br>TemplateHaskell: no<br>TemplateHaskellQuotes: no<br></span>TransformListComp: no<br>Trustworthy: no<br>TypeFamilyDependencies: no<br>TypeInType: no<span class="gmail-im" style="color:rgb(80,0,80)"><br>UnboxedSums: no<br>UnboxedTuples: no<br>UndecidableInstances: no<br>UndecidableSuperClasses: no<br></span>UnicodeSyntax: no<br>UnliftedFFITypes: no<br>UnliftedNewtypes: no<br>Unsafe: no<br></div><div><br></div><div>Vitaly</div></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">вт, 24 нояб. 2020 г. в 12:34, Joachim Breitner <<a href="mailto:mail@joachim-breitner.de">mail@joachim-breitner.de</a>>:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Dear Committee,<br>
<br>
the requested data (hackage and survey) is in, has been aggregated,<br>
cooked, seasoned and is ready for consumption. 116 extensions are<br>
waiting on your assessment, so time to vote!<br>
<br>
## Procedure<br>
<br>
Please vote by email to this list, in a response to this thread.<br>
<br>
I want to make tallying easy and automatic, and my code will consider<br>
an extension Foo voted for if you write "Foo: yes" on its own line.<br>
This means you can include rationales, write "Foo: maybe" and "Foo: no"<br>
to remind yourself and others that about where you are, and you can<br>
safely quote other’s mails. For example, if you write:<br>
<br>
---- begin<br>
example ----<br>
<br>
Easy ones:<br>
<br>
DeriveFooBar: yes<br>
OverloadedBen: no<br>
<br>
These ones are tricky:<br>
<br>
ImplicitExceptions: yes<br>
  I know nobody likes that one, but I do.<br>
<br>
RandomEvaluationOrder: maybe<br>
  Not sure about this one, here is why…<br>
<br>
<br>
> Richard wrote:<br>
> DependentHaskell: yes<br>
> Rationale: See my thesis<br>
<br>
I’m not convinced yet, tell me more, so<br>
DependentHaskell: maybe<br>
<br>
---- end example ----<br>
<br>
then you have voted for DeriveFooBar and ImplicitExceptions. Only “yes”<br>
matters, “no”, “maybe” and “later” are all ignored.<br>
<br>
I will shortly send my first ballot around. Also see the end of this<br>
mail for a copy’n’paste template.<br>
<br>
You can update your vote as often as you want. Please always send your<br>
full votes (I will only consider your latest email). I encourage you to<br>
do that early, e.g. maybe start with a mail where you list the obvious<br>
yes and nos, and keep some at maybe and then refine.<br>
<br>
The timeline says first votes should be in within two weeks, and then a<br>
bit more to refine. But the earlier the merrier!<br>
<br>
The quota is 8. In particular, if everyone votes (and I hope everyone<br>
will), an extension won’t make it this round if 4 don’t include it.<br>
<br>
## Data<br>
<br>
Please see <br>
<a href="https://github.com/ghc-proposals/ghc-proposals/blob/ghc2021/proposals/0000-ghc2021.rst#data" rel="noreferrer" target="_blank">https://github.com/ghc-proposals/ghc-proposals/blob/ghc2021/proposals/0000-ghc2021.rst#data</a><br>
for the data, including explanations. It is intentionally not sorted by<br>
the data, as the choice of ranking function would already be quite<br>
influencing.<br>
<br>
You may want to play around with that data, e.g. sort it by your own<br>
criteria etc. I looked long for an online service where I can upload<br>
the data and allow you to explore it, but then I noticed that that's a<br>
bit stupid, since we all probably can do it best with Haskell.<br>
<br>
So I made it easy to load the data into GHCi, see the instructions at<br>
<a href="https://github.com/nomeata/ghc-proposals-stats/blob/master/ext-stats/README.md" rel="noreferrer" target="_blank">https://github.com/nomeata/ghc-proposals-stats/blob/master/ext-stats/README.md</a><br>
which allow you, for example, to do this<br>
<br>
*Main> mapM_ (\E{..} -> Text.Printf.printf "%s: %d\n" ext survey_no) $ take 10 $ reverse $ sortOn (\E{..} -> survey_no) (M.elems exts)<br>
AllowAmbiguousTypes: 195<br>
CPP: 192<br>
IncoherentInstances: 176<br>
Arrows: 156<br>
Strict: 153<br>
ImplicitParams: 147<br>
UndecidableInstances: 144<br>
OverlappingInstances: 144<br>
Unsafe: 139<br>
TemplateHaskell: 137<br>
<br>
Of course, if someone wants to upload the data somewhere and share<br>
that, that's also useful.<br>
<br>
<br>
Let me know if some of this doesn't quite work for you, and should be<br>
improved. Maybe we need a web form instead of mails?<br>
<br>
<br>
## PS: Blank ballot<br>
<br>
To start, you could copy the following into an email<br>
<br>
AllowAmbiguousTypes: maybe<br>
ApplicativeDo: maybe<br>
Arrows: maybe<br>
BangPatterns: maybe<br>
BinaryLiterals: maybe<br>
BlockArguments: maybe<br>
CApiFFI: maybe<br>
CPP: maybe<br>
CUSKs: maybe<br>
ConstrainedClassMethods: maybe<br>
ConstraintKinds: maybe<br>
DataKinds: maybe<br>
DatatypeContexts: maybe<br>
DefaultSignatures: maybe<br>
DeriveAnyClass: maybe<br>
DeriveDataTypeable: maybe<br>
DeriveFoldable: maybe<br>
DeriveFunctor: maybe<br>
DeriveGeneric: maybe<br>
DeriveLift: maybe<br>
DeriveTraversable: maybe<br>
DerivingStrategies: maybe<br>
DerivingVia: maybe<br>
DisambiguateRecordFields: maybe<br>
DuplicateRecordFields: maybe<br>
EmptyCase: maybe<br>
EmptyDataDecls: maybe<br>
EmptyDataDeriving: maybe<br>
ExistentialQuantification: maybe<br>
ExplicitForAll: maybe<br>
ExplicitNamespaces: maybe<br>
ExtendedDefaultRules: maybe<br>
FlexibleContexts: maybe<br>
FlexibleInstances: maybe<br>
ForeignFunctionInterface: maybe<br>
FunctionalDependencies: maybe<br>
GADTSyntax: maybe<br>
GADTs: maybe<br>
GHCForeignImportPrim: maybe<br>
GeneralisedNewtypeDeriving: maybe<br>
HexFloatLiterals: maybe<br>
ImplicitParams: maybe<br>
ImportQualifiedPost: maybe<br>
ImpredicativeTypes: maybe<br>
IncoherentInstances: maybe<br>
InstanceSigs: maybe<br>
InterruptibleFFI: maybe<br>
KindSignatures: maybe<br>
LambdaCase: maybe<br>
LexicalNegation: maybe<br>
LiberalTypeSynonyms: maybe<br>
LinearTypes: maybe<br>
MagicHash: maybe<br>
MonadComprehensions: maybe<br>
MonadFailDesugaring: maybe<br>
MonoLocalBinds: maybe<br>
MultiParamTypeClasses: maybe<br>
MultiWayIf: maybe<br>
NPlusKPatterns: maybe<br>
NamedFieldPuns: maybe<br>
NamedWildCards: maybe<br>
NegativeLiterals: maybe<br>
NoImplicitPrelude: maybe<br>
NoMonomorphismRestriction: maybe<br>
NoPatternGuards: maybe<br>
NoTraditionalRecordSyntax: maybe<br>
NondecreasingIndentation: maybe<br>
NullaryTypeClasses: maybe<br>
NumDecimals: maybe<br>
NumericUnderscores: maybe<br>
OverlappingInstances: maybe<br>
OverloadedLabels: maybe<br>
OverloadedLists: maybe<br>
OverloadedStrings: maybe<br>
PackageImports: maybe<br>
ParallelListComp: maybe<br>
PartialTypeSignatures: maybe<br>
PatternSynonyms: maybe<br>
PolyKinds: maybe<br>
PostfixOperators: maybe<br>
QualifiedDo: maybe<br>
QuantifiedConstraints: maybe<br>
QuasiQuotes: maybe<br>
RankNTypes: maybe<br>
RebindableSyntax: maybe<br>
RecordWildCards: maybe<br>
RecursiveDo: maybe<br>
RoleAnnotations: maybe<br>
Safe: maybe<br>
ScopedTypeVariables: maybe<br>
StandaloneDeriving: maybe<br>
StandaloneKindSignatures: maybe<br>
StarIsType: maybe<br>
StaticPointers: maybe<br>
Strict: maybe<br>
StrictData: maybe<br>
TemplateHaskell: maybe<br>
TemplateHaskellQuotes: maybe<br>
TransformListComp: maybe<br>
Trustworthy: maybe<br>
TupleSections: maybe<br>
TypeApplications: maybe<br>
TypeFamilies: maybe<br>
TypeFamilyDependencies: maybe<br>
TypeInType: maybe<br>
TypeOperators: maybe<br>
TypeSynonymInstances: maybe<br>
UnboxedSums: maybe<br>
UnboxedTuples: maybe<br>
UndecidableInstances: maybe<br>
UndecidableSuperClasses: maybe<br>
UnicodeSyntax: maybe<br>
UnliftedFFITypes: maybe<br>
UnliftedNewtypes: maybe<br>
Unsafe: maybe<br>
ViewPatterns: maybe<br>
<br>
<br>
<br>
<br>
-- <br>
Joachim Breitner<br>
  <a href="mailto:mail@joachim-breitner.de" target="_blank">mail@joachim-breitner.de</a><br>
  <a href="http://www.joachim-breitner.de/" rel="noreferrer" target="_blank">http://www.joachim-breitner.de/</a><br>
<br>
<br>
_______________________________________________<br>
ghc-steering-committee mailing list<br>
<a href="mailto:ghc-steering-committee@haskell.org" target="_blank">ghc-steering-committee@haskell.org</a><br>
<a href="https://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-steering-committee" rel="noreferrer" target="_blank">https://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-steering-committee</a><br>
</blockquote></div>