Version 22 (modified by john@…, 11 years ago) (diff)

note about GADT based classes.

These are features which we might want to consider for removal or replacement with something better/cleaner.

  • eliminate tab stops in layout
  • n + k patterns
    • For removal: we have been saying it will happen for a while now, we should make good on it.
  • NegativeSyntax
  • ~ patterns
    • For removal: can be simulated with 'where' or 'let' clauses
    • Against removal:
      • fine control of strictness can require careful placement of these and let/where would obscure what is happening and get very verbose with nested ~ patterns.
      • are used in several safe programing idioms that would not be workroundable.
  • class contexts on data definitions
    • For removal: they add no extra useful expressivity that is not already present in the function signatures which use the datatype.
  • Defaulting
  • record syntax (see also ExistingRecords)
  • CompositionAsDot
  • the Prelude (or at least, seriously trim it to the minimum possible)
  • the monomorphism restriction
    • (JL) This one has been worked so extensively in the past, I find it hard to imagine we could make any significant progress.
  • classes (no really, there are people who advocate this!)
    • (JL) This would so fundamentally change the nature of Haskell as to make it a different language. It is surely out of scope for what we plan to accomplish.
    • Helium has no classes, yet is recognisably very Haskell-like.
    • A concrete proposal would be to replace classes with named dictionaries that can be constructed and passed around explicitly. See NamedInstances. However this would rule out GADT based class implementations such as jhc's.