[ghc-steering-committee] #380 GHC2021: Current status
Eric Seidel
eric at seidel.io
Sat Dec 5 01:04:13 UTC 2020
Here are my updated votes, I changed:
> StarIsType: yes (convinced by Joachim not to rock the boat too much at first)
> DerivingVia: no (convinced by Arnaud that it's not mature enough yet)
---
## syntax
BangPatterns: yes
BinaryLiterals: yes
EmptyCase: yes
EmptyDataDecls: yes
ExplicitForAll: yes
ExplicitNamespaces: yes
GADTSyntax: yes
HexFloatLiterals: yes
ImportQualifiedPost: yes
InstanceSigs: yes
KindSignatures: yes
MonadFailDesugaring: yes
NegativeLiterals: yes
NumericUnderscores: yes
PatternSynonyms: yes
PostfixOperators: yes
StarIsType: yes
TypeApplications: yes
OverloadedLists: yes
OverloadedStrings: yes
I have to enable OverloadedStrings regularly,
and it's one of the few extensions GHC
cannot suggest, which trips up my editor, and by
extension me, on a regular basis. I admit that I've
never actually used OverloadedLists, but I like it
as a direction for the language.
BlockArguments: maybe
I like this one, but it feels a bit recent.
MonadComprehensions: maybe
NumDecimals: maybe
ParallelListComp: maybe
RecursiveDo: maybe
ApplicativeDo: no
Arrows: no
LexicalNegation: no
NPlusKPatterns: no
NondecreasingIndentation: no
OverloadedLabels: no
QualifiedDo: no
RebindableSyntax: no
It's marked legacy syntax, let's be bold and get rid of it.
TransformListComp: no
TupleSections: no
This conflicts with proposals around trailing commas
that we may want to consider.
UnicodeSyntax: no
ViewPatterns: no
LambdaCase: no
MultiWayIf: no
I like both of these, but I've been convinced to wait out
the current discussion around alternate designs.
## types
ConstrainedClassMethods: yes
ConstraintKinds: yes
DataKinds: yes
DefaultSignatures: yes
ExistentialQuantification: yes
This is occasionally useful, and purely opt-in.
FlexibleContexts: yes
FlexibleInstances: yes
FunctionalDependencies: yes
GADTs: yes
MonoLocalBinds: yes
I think I actually prefer this even in the absence of GADTs.
MultiParamTypeClasses: yes
PolyKinds: yes
RankNTypes: yes
RoleAnnotations: yes
ScopedTypeVariables: yes
StandaloneKindSignatures: yes
TypeFamilies: yes
TypeFamilyDependencies: yes
TypeOperators: yes
TypeSynonymInstances: yes
NamedWildCards: yes
PartialTypeSignatures: yes
These are useful for debugging and warned on by default.
UndecidableInstances: maybe
UndecidableSuperClasses: maybe
Is it really that bad if we allow the possibility of the
type checker looping? This does not introduce unsoundness.
CUSKs: no
DatatypeContexts: no
ImplicitParams: no
ImpredicativeTypes: no
IncoherentInstances: no
LiberalTypeSynonyms: no
LinearTypes: no
NullaryTypeClasses: no
OverlappingInstances: no
QuantifiedConstraints: no
TypeInType: no
## records
DisambiguateRecordFields: yes
This only allows unambiguous uses of fields,
so it seems very safe.
NamedFieldPuns: yes
RecordWildCards: yes
I know these are controversial, but they're opt-in
and super useful.
DuplicateRecordFields: maybe
There are some valid critiques of this extension,
but I think it's still generally useful, at least
until RecordDotSyntax is implemented and stable.
## deriving
DeriveDataTypeable: yes
DeriveFoldable: yes
DeriveFunctor: yes
DeriveGeneric: yes
DeriveLift: yes
DeriveTraversable: yes
GeneralisedNewtypeDeriving: yes
StandaloneDeriving: yes
DerivingStrategies: maybe
DeriveAnyClass: no
DerivingVia: no
EmptyDataDeriving: no
## low-level / ffi
CApiFFI: no
ForeignFunctionInterface: no
I know this is part of Haskell2010, but I feel like
FFI is niche and low-level enough to warrant a marker
GHCForeignImportPrim: no
InterruptibleFFI: no
MagicHash: no
UnboxedSums: no
UnboxedTuples: no
UnliftedFFITypes: no
UnliftedNewtypes: no
## other
AllowAmbiguousTypes: no
CPP: no
ExtendedDefaultRules: no
NoImplicitPrelude: no
NoMonomorphismRestriction: no
NoPatternGuards: no
NoTraditionalRecordSyntax: no
PackageImports: no
QuasiQuotes: no
Safe: no
StaticPointers: no
Strict: no
StrictData: no
TemplateHaskell: no
TemplateHaskellQuotes: no
Trustworthy: no
Unsafe: no
On Fri, Dec 4, 2020, at 13:44, Richard Eisenberg wrote:
>
>
> > On Dec 4, 2020, at 10:29 AM, Joachim Breitner <mail at joachim-breitner.de> wrote:
> >
> > I think NoStarIsType, as sensible it may be to most of us, _will_ deepy
> > annoy some people. Let’s build credibility and acceptance with GHC2021,
> > and have lots of happy people out there. And (if anything!) use later
> > versions to do more contentious things.
>
> I deeply dislike -XStarIsType. But I'm convinced here. My updated vote is below.
>
> Richard
>
> *Module System
> =============*
>
> ImportQualifiedPost: yes
> PackageImports: obscure
> NoImplicitPrelude: breaking
>
> *Notation
> ========*
>
> BlockArguments: yes
> MultiWayIf: might change
> LambdaCase: might change
> BinaryLiterals: yes
> HexFloatLiterals: yes
> NumericUnderscores: yes
> NumDecimals: yes
> OverloadedStrings: bad for beginners
> OverloadedLists: bad for beginners
> OverloadedLabels: obscure
> EmptyCase: yes
> PostfixOperators: yes
> LexicalNegation: yes
> UnicodeSyntax: yes
> NegativeLiterals: superseded
> TupleSections: yes
> ImplicitParams: obscure
> ParallelListComp: yes
> RecursiveDo: obscure
> TransformListComp: obscure
> Arrows: obscure
> ApplicativeDo: breaking
> QualifiedDo: too fresh
> MonadComprehensions: bad for beginners
> NondecreasingIndentation: obscure
> RebindableSyntax: breaking
> ExplicitNamespaces: yes
>
> *Data Types
> ==========
> *
> DatatypeContexts: no
> ExistentialQuantification: yes
> EmptyDataDecls: yes
> RoleAnnotations: yes
> StrictData: breaking
> GADTSyntax: yes
> GADTs: obscure
>
> *Patterns and Guards
> ===================*
>
> BangPatterns: yes
> ViewPatterns: yes
> PatternSynonyms: too fresh
> NoPatternGuards: breaking
> NPlusKPatterns: deprecated
>
> *Records
> =======*
>
> NamedFieldPuns: yes
> RecordWildCards: confusing
> DisambiguateRecordFields: yes
> DuplicateRecordFields: might change
> NoTraditionalRecordSyntax: no
>
> *Deriving
> =======*
>
> DeriveGeneric: yes
> DeriveLift: yes
> DeriveDataTypeable: yes
> EmptyDataDeriving: yes
> StandaloneDeriving: yes
> DeriveFunctor: yes
> DeriveFoldable: yes
> DeriveTraversable: yes
> DerivingStrategies: yes
> DerivingVia: yes
> GeneralisedNewtypeDeriving: yes
> DeriveAnyClass: dangerous
>
> *Class System
> ============*
>
> MultiParamTypeClasses: yes
> NullaryTypeClasses: superseded
> ConstraintKinds: yes
> TypeSynonymInstances: yes
> FlexibleInstances: yes
> FlexibleContexts: yes
> ConstrainedClassMethods: yes
> DefaultSignatures: yes
> InstanceSigs: yes
> ExtendedDefaultRules: might change
> FunctionalDependencies: obscure
> QuantifiedConstraints: too fresh
> UndecidableInstances: dangerous
> IncoherentInstances: dangerous
> UndecidableSuperClasses: dangerous
> OverlappingInstances: superseded
> *
> *
> Types
> *=====*
>
> RankNTypes: yes
> StandaloneKindSignatures: yes
> KindSignatures: yes
> LiberalTypeSynonyms: confusing
> ScopedTypeVariables: might change
> ExplicitForAll: yes
> AllowAmbiguousTypes: dangerous
> ImpredicativeTypes: too fresh
> MonoLocalBinds: breaking
> NoMonomorphismRestriction: debate!
> PartialTypeSignatures: obscure
> NamedWildCards: yes
> LinearTypes: too fresh
> TypeApplications: yes
> PolyKinds: yes
> TypeOperators: yes
> StarIsType: yes
> TypeFamilies: obscure
> TypeFamilyDependencies: obscure
> DataKinds: might change
>
> *FFI
> ===*
>
> ForeignFunctionInterface: yes
> CApiFFI: obscure
> GHCForeignImportPrim: obscure
> InterruptibleFFI: obscure
> UnliftedFFITypes: obscure
> StaticPointers: obscure
>
> *Low Level
> =========*
>
> UnboxedSums: obscure
> UnboxedTuples: obscure
> MagicHash: obscure
> UnliftedNewtypes: yes
>
> *Macros
> ======*
>
> CPP: obscure
> TemplateHaskell: TH
> TemplateHaskellQuotes: yes
> QuasiQuotes: TH
>
>
> *Other
> =====*
>
> Unsafe: no
> Safe: no
> Trustworthy: no
> Strict: no
>
> *Obsolete/Deprecated
> ===================*
>
> CUSKs: no
> TypeInType: no
> MonadFailDesugaring: maybe
> _______________________________________________
> ghc-steering-committee mailing list
> ghc-steering-committee at haskell.org
> https://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-steering-committee
>
More information about the ghc-steering-committee
mailing list