<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class="">
My reservations around adding GADTs are really only reservations around MonoLocalBinds.
<div class="">However, as has been pointed out, TypeFamilies also implies MonoLocalBinds (this probably shouldn’t have been news to me), so I suppose I’d ought to go with both or neither!
<div class=""><br class="">
</div>
<div class="">Given <i class="">that</i> choice, I think I’d rather add GADTs to my “yes” list than add TypeFamilies to my “no” list. Joachim, sorry to mess up your statistics again :)</div>
<div class=""><br class="">
</div>
<div class="">Cheers,</div>
<div class="">Tom<br class="">
<div><br class="">
<blockquote type="cite" class="">
<div class="">On 3 Dec 2020, at 10:03, Simon Peyton Jones via ghc-steering-committee <<a href="mailto:ghc-steering-committee@haskell.org" class="">ghc-steering-committee@haskell.org</a>> wrote:</div>
<br class="Apple-interchange-newline">
<div class="">
<div class="WordSection1" style="page: WordSection1; caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;">
<div style="margin: 0cm; font-size: 11pt; font-family: Calibri, sans-serif;" class="">
<span class="">GADTs must be one of Haskell’s most successful innovations ever.  It’s a big feature, but it’s extremely well established now, and widely used.   Users like GADTs – it’s #7 in the “popularity” column.<o:p class=""></o:p></span></div>
<div style="margin: 0cm; font-size: 11pt; font-family: Calibri, sans-serif;" class="">
<span class=""><o:p class=""> </o:p></span></div>
<div style="margin: 0cm; font-size: 11pt; font-family: Calibri, sans-serif;" class="">
<span class="">Vote for GADTs<span class="Apple-converted-space"> </span></span><span style="font-family: "Segoe UI Emoji", sans-serif;" class="">😊</span><span class="">.<o:p class=""></o:p></span></div>
<div style="margin: 0cm; font-size: 11pt; font-family: Calibri, sans-serif;" class="">
<span class=""><o:p class=""> </o:p></span></div>
<div style="margin: 0cm; font-size: 11pt; font-family: Calibri, sans-serif;" class="">
<span class="">Simon<o:p class=""></o:p></span></div>
<div style="margin: 0cm; font-size: 11pt; font-family: Calibri, sans-serif;" class="">
<span class=""><o:p class=""> </o:p></span></div>
<div style="border-style: none none none solid; border-left-width: 1.5pt; border-left-color: blue; padding: 0cm 0cm 0cm 4pt;" class="">
<div class="">
<div style="border-style: solid none none; border-top-width: 1pt; border-top-color: rgb(225, 225, 225); padding: 3pt 0cm 0cm;" class="">
<div style="margin: 0cm; font-size: 11pt; font-family: Calibri, sans-serif;" class="">
<b class=""><span lang="EN-US" class="">From:</span></b><span lang="EN-US" class=""><span class="Apple-converted-space"> </span>ghc-steering-committee <<a href="mailto:ghc-steering-committee-bounces@haskell.org" class="">ghc-steering-committee-bounces@haskell.org</a>><span class="Apple-converted-space"> </span><b class="">On
 Behalf Of<span class="Apple-converted-space"> </span></b>Alejandro Serrano Mena<br class="">
<b class="">Sent:</b><span class="Apple-converted-space"> </span>03 December 2020 09:41<br class="">
<b class="">To:</b><span class="Apple-converted-space"> </span>Joachim Breitner <<a href="mailto:mail@joachim-breitner.de" class="">mail@joachim-breitner.de</a>><br class="">
<b class="">Cc:</b><span class="Apple-converted-space"> </span><a href="mailto:ghc-steering-committee@haskell.org" class="">ghc-steering-committee@haskell.org</a><br class="">
<b class="">Subject:</b><span class="Apple-converted-space"> </span>Re: [ghc-steering-committee] #380 GHC2021: Current status<o:p class=""></o:p></span></div>
</div>
</div>
<div style="margin: 0cm; font-size: 11pt; font-family: Calibri, sans-serif;" class="">
<o:p class=""> </o:p></div>
<div class="">
<div style="margin: 0cm; font-size: 11pt; font-family: Calibri, sans-serif;" class="">
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<o:p class=""></o:p></div>
</div>
<div class="">
<div style="margin: 0cm; font-size: 11pt; font-family: Calibri, sans-serif;" class="">
<o:p class=""> </o:p></div>
</div>
<div class="">
<div style="margin: 0cm; font-size: 11pt; font-family: Calibri, sans-serif;" class="">
To get some more discussion, I would be very happy to hear reasons for and against:<o:p class=""></o:p></div>
</div>
<div class="">
<div style="margin: 0cm; font-size: 11pt; font-family: Calibri, sans-serif;" class="">
<o:p class=""> </o:p></div>
</div>
<div class="">
<div style="margin: 0cm; font-size: 11pt; font-family: Calibri, sans-serif;" class="">
- GADTs:<o:p class=""></o:p></div>
</div>
<div class="">
<div style="margin: 0cm; font-size: 11pt; font-family: Calibri, sans-serif;" class="">
  - Stable and well documented,<o:p class=""></o:p></div>
</div>
<div class="">
<div style="margin: 0cm; font-size: 11pt; font-family: Calibri, sans-serif;" class="">
  - Adding indices to types is one of the main reasons one would like to have MultiParamTypeClasses and TypeFamilies on,<o:p class=""></o:p></div>
</div>
<div class="">
<div style="margin: 0cm; font-size: 11pt; font-family: Calibri, sans-serif;" class="">
  - I find the GADT syntax much nicer (but this is an extremely personal choice.)<o:p class=""></o:p></div>
</div>
<div class="">
<div style="margin: 0cm; font-size: 11pt; font-family: Calibri, sans-serif;" class="">
<o:p class=""> </o:p></div>
</div>
<div class="">
<div style="margin: 0cm; font-size: 11pt; font-family: Calibri, sans-serif;" class="">
- RankNTypes:<o:p class=""></o:p></div>
</div>
<div class="">
<div style="margin: 0cm; font-size: 11pt; font-family: Calibri, sans-serif;" class="">
  - I originally voted “no”, because I find it to be part of “advanced Haskell”, and because using it may be complicated without ImpredicativeTypes on,<o:p class=""></o:p></div>
</div>
<div class="">
<div style="margin: 0cm; font-size: 11pt; font-family: Calibri, sans-serif;" class="">
  - On the other hand, it’s also been in GHC for ages.<o:p class=""></o:p></div>
</div>
<div class="">
<div style="margin: 0cm; font-size: 11pt; font-family: Calibri, sans-serif;" class="">
<o:p class=""> </o:p></div>
<div class="">
<div class="">
<div style="margin: 0cm; font-size: 11pt; font-family: Calibri, sans-serif;" class="">
On 3 Dec 2020 at 10:31:18, Joachim Breitner <<a href="mailto:mail@joachim-breitner.de" style="color: blue; text-decoration: underline;" class="">mail@joachim-breitner.de</a>> wrote:<o:p class=""></o:p></div>
</div>
<blockquote style="border-style: none none none solid; border-left-width: 1pt; border-left-color: rgb(204, 204, 204); padding: 0cm 0cm 0cm 6pt; margin-left: 4.8pt; margin-right: 0cm;" class="">
<div class="">
<div style="margin: 0cm; font-size: 11pt; font-family: Calibri, sans-serif;" class="">
Dear Committee,<br class="">
<br class="">
<br class="">
we have 9 votes in. Dear Cale and Eric, can we have your votes please?<br class="">
<br class="">
As always, the table<br class="">
<a href="https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fghc-proposals%2Fghc-proposals%2Fblob%2Fghc2021%2Fproposals%2F0000-ghc2021.rst%23data&data=04%7C01%7Csimonpj%40microsoft.com%7Cd1b5e56aaa764f6028e308d8976f8dc3%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637425852654681789%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=rzZgJlwbhSUTgZ2bRgSMRTZiArUtaKdzyCJAdpC2wWk%3D&reserved=0" style="color: blue; text-decoration: underline;" class="">https://github.com/ghc-proposals/ghc-proposals/blob/ghc2021/proposals/0000-ghc2021.rst#data</a><br class="">
has the current data.<br class="">
<br class="">
We had the most discussion so far about:<br class="">
<br class="">
* The innnocence of PostfixOperators<br class="">
* The effect of UnicodeSyntax on error messages<br class="">
* Whether InstanceSigs is a good design<br class="">
* Whether OverloadedString is harmless enough.<br class="">
<br class="">
I see that three is less clear signal on odd extensions that are<br class="">
obsolete, on by default, implied by others etc. That’s probably fine<br class="">
and no need to worry; some of them will be resolved by virtue of being<br class="">
implied by others. We can also sanity-check the final result, and<br class="">
include all implied ones in the final design.<br class="">
<br class="">
So where do we stand?<br class="">
<br class="">
Applying the actual quota of ⅔ out of 11, i.e. 8 votes, these would go<br class="">
in no matter how Cale and Eric vote:<br class="">
<br class="">
  BangPatterns, BinaryLiterals, ConstraintKinds, DeriveDataTypeable,<br class="">
  DeriveFoldable, DeriveFunctor, DeriveGeneric, DeriveLift,<br class="">
  DeriveTraversable, EmptyCase, EmptyDataDecls, EmptyDataDeriving,<br class="">
  ExplicitForAll, FlexibleContexts, FlexibleInstances, GADTSyntax,<br class="">
  HexFloatLiterals, ImportQualifiedPost, KindSignatures,<br class="">
  MultiParamTypeClasses, NamedFieldPuns, NumericUnderscores,<br class="">
  StandaloneDeriving, ViewPatterns<br class="">
<br class="">
The following have 6 or 7 votes, i.e. they’d go in if we extrapolate<br class="">
from the current votes:<br class="">
<br class="">
  ConstrainedClassMethods, DerivingStrategies,<br class="">
  ExistentialQuantification, GeneralisedNewtypeDeriving, InstanceSigs,<br class="">
  NegativeLiterals, PostfixOperators, RankNTypes, RecordWildCards,<br class="">
  ScopedTypeVariables, TupleSections, TypeApplications, TypeFamilies,<br class="">
  TypeOperators, TypeSynonymInstances<br class="">
<br class="">
  These extensions are short one vote:<br class="">
<br class="">
  DataKinds, DerivingVia, GADTs, LambdaCase, PolyKinds<br class="">
<br class="">
<br class="">
<br class="">
  So how sad would we all be? This is the sadness report for each<br class="">
  committee member, showing the symmetric difference between their ballot<br class="">
  and the (extrapolated) result.<br class="">
<br class="">
<br class="">
  alejandro<br class="">
  would miss:<br class="">
  DataKinds, DerivingVia, GADTs, LambdaCase, MonadFailDesugaring,<br class="">
  NamedWildCards, NoMonomorphismRestriction, NullaryTypeClasses,<br class="">
  NumDecimals, OverloadedLists, OverloadedStrings, PolyKinds,<br class="">
  StandaloneKindSignatures<br class="">
  doesn’t want:<br class="">
  RankNTypes<br class="">
<br class="">
  arnaud<br class="">
  would miss:<br class="">
  Arrows, ExplicitNamespaces, ForeignFunctionInterface,<br class="">
  FunctionalDependencies, GADTs, MonadFailDesugaring, MonoLocalBinds,<br class="">
  PartialTypeSignatures, StarIsType, TypeFamilyDependencies<br class="">
  doesn’t want:<br class="">
  ExistentialQuantification, ImportQualifiedPost, InstanceSigs,<br class="">
  NamedFieldPuns, RankNTypes, RecordWildCards, ScopedTypeVariables,<br class="">
  TupleSections, TypeSynonymInstances<br class="">
<br class="">
  iavor<br class="">
  would miss:<br class="">
  BlockArguments, MultiWayIf, NoMonomorphismRestriction,<br class="">
  NullaryTypeClasses, OverloadedStrings, ParallelListComp, RecursiveDo<br class="">
  doesn’t want:<br class="">
  ConstrainedClassMethods, ConstraintKinds, DeriveFoldable,<br class="">
  DeriveFunctor, DeriveTraversable, DerivingStrategies, EmptyCase,<br class="">
  GADTSyntax, GeneralisedNewtypeDeriving, InstanceSigs, KindSignatures,<br class="">
  NegativeLiterals, PostfixOperators, TupleSections, TypeApplications,<br class="">
  TypeFamilies, TypeOperators<br class="">
<br class="">
  joachim<br class="">
  would miss:<br class="">
  DataKinds, DerivingVia, ForeignFunctionInterface, GADTs, LambdaCase,<br class="">
  MonoLocalBinds, NamedWildCards, NondecreasingIndentation,<br class="">
  RoleAnnotations, StarIsType, UnicodeSyntax, UnliftedFFITypes,<br class="">
  UnliftedNewtypes<br class="">
  doesn’t want:<br class="">
  ConstrainedClassMethods, ScopedTypeVariables, TypeSynonymInstances<br class="">
<br class="">
  richard<br class="">
  would miss:<br class="">
  BlockArguments, DefaultSignatures, DerivingVia,<br class="">
  DisambiguateRecordFields, ExplicitNamespaces, LexicalNegation,<br class="">
  NamedWildCards, NumDecimals, ParallelListComp, PolyKinds,<br class="">
  RoleAnnotations, StandaloneKindSignatures, TemplateHaskellQuotes,<br class="">
  UnicodeSyntax, UnliftedNewtypes<br class="">
  doesn’t want:<br class="">
  NegativeLiterals, RecordWildCards, ScopedTypeVariables, TypeFamilies<br class="">
<br class="">
  simonm<br class="">
  would miss:<br class="">
  DataKinds, DefaultSignatures, ForeignFunctionInterface, GADTs,<br class="">
  LambdaCase, LiberalTypeSynonyms, MonoLocalBinds, MultiWayIf,<br class="">
  NoMonomorphismRestriction, NondecreasingIndentation, NumDecimals,<br class="">
  OverloadedStrings, PatternSynonyms, PolyKinds, UnicodeSyntax<br class="">
  doesn’t want:<br class="">
  DeriveLift, DerivingStrategies, NumericUnderscores, TypeApplications,<br class="">
  TypeOperators, ViewPatterns<br class="">
<br class="">
  spj<br class="">
  would miss:<br class="">
  MonoLocalBinds, NoMonomorphismRestriction, NullaryTypeClasses,<br class="">
  OverloadedLists, OverloadedStrings, ParallelListComp, PolyKinds,<br class="">
  RecursiveDo, RoleAnnotations, StandaloneKindSignatures, StarIsType<br class="">
  doesn’t want:<br class="">
  DerivingStrategies, GeneralisedNewtypeDeriving, NegativeLiterals,<br class="">
  RecordWildCards, TupleSections, TypeFamilies<br class="">
<br class="">
  tom<br class="">
  would miss:<br class="">
  BlockArguments, DataKinds, DefaultSignatures, DerivingVia,<br class="">
  DisambiguateRecordFields, DuplicateRecordFields, ExplicitNamespaces,<br class="">
  FunctionalDependencies, LambdaCase, LexicalNegation,<br class="">
  LiberalTypeSynonyms, MagicHash, MultiWayIf, NamedWildCards,<br class="">
  NullaryTypeClasses, NumDecimals, PackageImports, ParallelListComp,<br class="">
  PolyKinds, QuasiQuotes, RoleAnnotations, StandaloneKindSignatures,<br class="">
  TemplateHaskell, TemplateHaskellQuotes, TypeFamilyDependencies,<br class="">
  UnboxedSums, UnboxedTuples, UnicodeSyntax, UnliftedNewtypes<br class="">
  doesn’t want:<br class="">
  none!<br class="">
<br class="">
  vitaly<br class="">
  would miss:<br class="">
  DataKinds, DerivingVia, GADTs, LambdaCase, MonadFailDesugaring,<br class="">
  StarIsType<br class="">
  doesn’t want:<br class="">
  ConstrainedClassMethods, ExistentialQuantification, PostfixOperators<br class="">
<br class="">
<br class="">
  --<span class="Apple-converted-space"> </span><br class="">
  Joachim Breitner<br class="">
 <a href="mailto:mail@joachim-breitner.de" style="color: blue; text-decoration: underline;" class="">mail@joachim-breitner.de</a><br class="">
 <a href="https://nam06.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.joachim-breitner.de%2F&data=04%7C01%7Csimonpj%40microsoft.com%7Cd1b5e56aaa764f6028e308d8976f8dc3%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637425852654691785%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=5ZVahXxGFqEyoTMqj5ZitQaTKIIsSxu1G64gFcUFvjU%3D&reserved=0" style="color: blue; text-decoration: underline;" class="">http://www.joachim-breitner.de/</a><br class="">
<br class="">
<br class="">
_______________________________________________<br class="">
ghc-steering-committee mailing list<br class="">
<a href="mailto:ghc-steering-committee@haskell.org" style="color: blue; text-decoration: underline;" class="">ghc-steering-committee@haskell.org</a><br class="">
<a href="https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fmail.haskell.org%2Fcgi-bin%2Fmailman%2Flistinfo%2Fghc-steering-committee&data=04%7C01%7Csimonpj%40microsoft.com%7Cd1b5e56aaa764f6028e308d8976f8dc3%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637425852654691785%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=hdxLRYi8jFlwCdrXzDjvDw%2B098%2B9tRWvg6KJt7NT02I%3D&reserved=0" style="color: blue; text-decoration: underline;" class="">https://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-steering-committee</a><o:p class=""></o:p></div>
</div>
</blockquote>
</div>
</div>
</div>
</div>
<span style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class="">_______________________________________________</span><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class="">
<span style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class="">ghc-steering-committee
 mailing list</span><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class="">
<span style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class=""><a href="mailto:ghc-steering-committee@haskell.org" class="">ghc-steering-committee@haskell.org</a></span><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class="">
<span style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class=""><a href="https://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-steering-committee" class="">https://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-steering-committee</a></span></div>
</blockquote>
</div>
<br class="">
</div>
</div>
</body>
</html>