I just flipped through the list of accepted GHC proposals[1]. I feel like a kid in a candy shop. I am particularly excited to see the large fraction of proposals that look like either simplifications or homogenizations (making the language more uniform):

* Make Constraint not apart from Type
* Allow signatures on pattern synonym constructors
* Explicit foralls ("Permit ``forall ...`` to bind type variables after the word ``instance`` ...")
* Remove the * kind syntax
* Allow ScopedTypeVariables to refer to types
* Treat kind and type vars identically with `forall`
* Embrace (Type :: Type) ("This proposal expands the meaning of -XPolyKinds to include -XTypeInType, deprecates -XTypeInType, and advocates for using Type in place of *.")

At various times, I have tried to explore the GHC extensions thoroughly -- well enough to know which ones will let you do what, so that I can learn the right one in detail when I need to. I have always turned back; the space seems too big to cover, and only growing. But now I see that GHC hosts competing forces of simplification and complication.

This might be a squishy question, but I'm interested in your feelings regarding how navigable the space of extensions is, and whether you think balkanization is a problem, and how you expect those qualities to evolve.

[1] https://github.com/ghc-proposals/ghc-proposals/pulls?page=2&q=label%3AAccepted


--
Jeff Brown | Jeffrey Benjamin Brown
Website   |   Facebook   |   LinkedIn(spammy, so I often miss messages here)   |   Github