Version 1 (modified by diatchki, 11 years ago) (diff)

Organizing the Proposals

This page groups the various proposals for Haskell' into four distinct categories.


This category contains proposal that primarily addresses issues of lexing and parsing. Of particular importance are questions of ambiguity and understandability.

  • fix lexical syntax for qualified idetnifiers
  • make _ caseless
  • fixity resolution

Language Convenience

Primarily provides a convinient way to do something that we could pretty much do something similar previously.

(questions about usability and readability)

  • New pragmas
  • Bang patterns
  • Deriving arbitrary instances for newtypes
  • Improve defaulting rules
  • Kind annotations
  • Monomorphic pattern bindings
  • Scoped type variables

Type System

This category contains proposals related to the type system and how the type checker works.

(Deep questions about the static behavior of programs.)

Critical Constants

Primarily provides sets of constants with specified operational behavior.

(Deep questions about dynamic behavior)

fix the lexical syntax for QualifiedIdentifiers #39 SM permit qualified identifiers in definitions?
FlexibleInstances #32 choice of instance conditions for termination of typechecking
poor interaction with NewtypeDeriving?
add NewPragmas #51 JM choose specific pragmas to standardize
make Underscore caseless #72 RN treatment of underscore-only identifiers
BangPatterns #76 top-level bang patterns
interaction with ! as an operator
bang-pattern polymorphism
existentials and bang patterns
ScopedTypeVariables #67, #81 MS specification of syntax that binds type variables
generalized deriving for newtype (NewtypeDeriving) #52 JM specification that does not reference "the same representation"
overlap with TypeSynonymInstances
remove FixityResolution from the context-free grammar #30 SM None
improve Defaulting rules #21 scope of default clauses
impact on existing defaults
KindAnnotations #84 BH, AL None
MonomorphicPatternBindings #103 RN treatment of pattern bindings with explicit type signatures