Version 13 (modified by john@…, 12 years ago) (diff)

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

  • n + k patterns
    • For removal: we have been saying it will happen for a while now, we should make good on it.
  • ~ 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.
  • the monomorphism restriction
  • classes (no really, there are people who advocate this!)
  • the Prelude (or at least, seriously trim it to the minimum possible)
  • defaulting
    • For removal: defaults are limited to certain classes. A tool like Hat, which transforms Haskell source, cannot transform the defaults, because there is no way make defaults apply to the transformed classes rather than the original ones.
    • For fixing: report specification when it comes to defaulting impossible to implement when general recursive modules are allowed.
    • For replacement: Perhaps require a default clause to name the class being defaulted over, as well as the type to choose.
  • 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.
  • record syntax