|
|
|
# Organizing the Proposals
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
This page groups the various proposals for Haskell' into four distinct categories.
|
|
|
|
For each category we provide a brief descriptions and two lists: the first contains
|
|
|
|
the proposals from the [definitely in](status'#"definitely-in"-proposal-status)
|
|
|
|
table, while the second one contains the proposals from the
|
|
|
|
[probably in](status'#"probably-in"-proposal-status) table.
|
|
|
|
|
|
|
|
|
|
|
|
## Syntax
|
|
|
|
|
|
|
|
|
|
|
|
These proposals primarily addresses issues of lexing and parsing.
|
|
|
|
Of particular importance are questions of ambiguity and understandability.
|
|
|
|
|
|
|
|
- [\#23](https://gitlab.haskell.org//haskell/prime/issues/23)[if-then-else in do notation](do-and-if-then-else) (done)
|
|
|
|
- [\#78](https://gitlab.haskell.org//haskell/prime/issues/78)[Infix type constructors](infix-type-constructors)
|
|
|
|
- [\#42](https://gitlab.haskell.org//haskell/prime/issues/42)[Syntax of line comments](line-comment-syntax)
|
|
|
|
This category contains proposal that primarily addresses
|
|
|
|
issues of lexing and parsing. Of particular importance are
|
|
|
|
questions of ambiguity and understandability.
|
|
|
|
|
|
|
|
|
|
|
|
- [\#23](https://gitlab.haskell.org//haskell/prime/issues/23) [if-then-else in do notation](do-and-if-then-else)
|
|
|
|
- [\#78](https://gitlab.haskell.org//haskell/prime/issues/78) [Infix type constructors](infix-type-constructors)
|
|
|
|
- [\#42](https://gitlab.haskell.org//haskell/prime/issues/42) [Syntax of line comments](line-comment-syntax)
|
|
|
|
|
|
|
|
- [\#53](https://gitlab.haskell.org//haskell/prime/issues/53) [Non-decreasing indentation](nondecreasing-indentation)
|
|
|
|
|
|
|
|
- fix lexical syntax for qualified idetnifiers
|
|
|
|
- make _ caseless
|
|
|
|
- fixity resolution
|
|
|
|
|
|
|
|
- [\#53](https://gitlab.haskell.org//haskell/prime/issues/53)[Non-decreasing indentation](nondecreasing-indentation)
|
|
|
|
- [\#39](https://gitlab.haskell.org//haskell/prime/issues/39)[Lexical syntax of qualified identifiers](qualified-identifiers)
|
|
|
|
- [\#72](https://gitlab.haskell.org//haskell/prime/issues/72)[Make _ caseless](underscore)
|
|
|
|
- [\#30](https://gitlab.haskell.org//haskell/prime/issues/30)[Remove operator fixity from the context-free grammar](fixity-resolution)
|
|
|
|
# Language Convenience
|
|
|
|
|
|
|
|
## Language Convenience
|
|
|
|
|
|
|
|
|
|
|
|
These proposals provide a more convenient way to do something that we can already do
|
|
|
|
(but perhaps in a "clunky" way).
|
|
|
|
Of particular interest are questions about usability and readability.
|
|
|
|
Primarily provides a convinient way to do
|
|
|
|
something that we could pretty much do something similar
|
|
|
|
previously.
|
|
|
|
|
|
|
|
- [\#25](https://gitlab.haskell.org//haskell/prime/issues/25)[Empty Data Declarations](empty-data-declarations)
|
|
|
|
- [\#56](https://gitlab.haskell.org//haskell/prime/issues/56)[Pattern guards](pattern-guards) (done)
|
|
|
|
- [\#24](https://gitlab.haskell.org//haskell/prime/issues/24)[Hierarchical Modules](hierarchical-modules)
|
|
|
|
|
|
|
|
- [\#70](https://gitlab.haskell.org//haskell/prime/issues/70)[Type synonym instances](type-synonym-instances)
|
|
|
|
- [\#51](https://gitlab.haskell.org//haskell/prime/issues/51)[New pragmas](new-pragmas)
|
|
|
|
- [\#76](https://gitlab.haskell.org//haskell/prime/issues/76)[Bang patterns](bang-patterns)
|
|
|
|
- [\#52](https://gitlab.haskell.org//haskell/prime/issues/52)[Generalized deriving for newtype](newtype-deriving)
|
|
|
|
- [\#21](https://gitlab.haskell.org//haskell/prime/issues/21)[Improve defaulting rules](defaulting)
|
|
|
|
- [\#84](https://gitlab.haskell.org//haskell/prime/issues/84)[Kind annotations](kind-annotations)
|
|
|
|
- [\#103](https://gitlab.haskell.org//haskell/prime/issues/103)[Monomorphic pattern bindings](monomorphic-pattern-bindings)
|
|
|
|
- [\#67](https://gitlab.haskell.org//haskell/prime/issues/67), [\#68](https://gitlab.haskell.org//haskell/prime/issues/68)[Scoped typed variables](scoped-type-variables)
|
|
|
|
>
|
|
|
|
>
|
|
|
|
> (questions about usability and readability)
|
|
|
|
>
|
|
|
|
>
|
|
|
|
|
|
|
|
- [\#25](https://gitlab.haskell.org//haskell/prime/issues/25) [Empty Data Declarations](empty-data-declarations)
|
|
|
|
- [\#56](https://gitlab.haskell.org//haskell/prime/issues/56) [Pattern guards](pattern-guards)
|
|
|
|
- [\#24](https://gitlab.haskell.org//haskell/prime/issues/24) [Hierarchical Modules](hierarchical-modules)
|
|
|
|
|
|
|
|
- [\#70](https://gitlab.haskell.org//haskell/prime/issues/70) [Type synonym instances](type-synonym-instances)
|
|
|
|
|
|
|
|
- New pragmas
|
|
|
|
- Bang patterns
|
|
|
|
- Deriving arbitrary instances for newtypes
|
|
|
|
- Improve defaulting rules
|
|
|
|
- Kind annotations
|
|
|
|
- Monomorphic pattern bindings
|
|
|
|
- Scoped type variables
|
|
|
|
|
|
|
|
## Type System
|
|
|
|
|
|
|
|
|
|
|
|
These proposals are related to the type system and how the type checker works.
|
|
|
|
They affect the static semantics of programs in fairly deep ways.
|
|
|
|
|
|
|
|
This category contains proposals related to the type system
|
|
|
|
and how the type checker works.
|
|
|
|
|
|
|
|
|
|
|
|
>
|
|
|
|
>
|
|
|
|
> (Deep questions about the static behavior of programs.)
|
|
|
|
>
|
|
|
|
>
|
|
|
|
|
|
|
|
- [\#60](https://gitlab.haskell.org//haskell/prime/issues/60) Higher-rank polymorphism ([RankNTypes](rank-n-types),[Rank2Types](rank2-types),[PolymorphicComponents](polymorphic-components)
|
|
|
|
- [\#26](https://gitlab.haskell.org//haskell/prime/issues/26)[Existential quantification in datatypes](existential-quantification)
|
|
|
|
- [\#49](https://gitlab.haskell.org//haskell/prime/issues/49)[Multi-parameter type classes](multi-param-type-classes) (see also [MultiParamTypeClassesDilemma](multi-param-type-classes-dilemma))
|
|
|
|
- [\#26](https://gitlab.haskell.org//haskell/prime/issues/26) [Existential quantification in datatypes](existential-quantification)
|
|
|
|
- [\#49](https://gitlab.haskell.org//haskell/prime/issues/49) [Multi-parameter type classes](multi-param-type-classes) (see also [MultiParamTypeClassesDilemma](multi-param-type-classes-dilemma))
|
|
|
|
|
|
|
|
- [Relaxed dependency analysis](relaxed-dependency-analysis)
|
|
|
|
|
|
|
|
- [\#65](https://gitlab.haskell.org//haskell/prime/issues/65)[Relaxed dependency analysis](relaxed-dependency-analysis)
|
|
|
|
- [\#32](https://gitlab.haskell.org//haskell/prime/issues/32)[Flexible instances](flexible-instances)
|
|
|
|
- Flexible instances
|
|
|
|
|
|
|
|
## Critical Constants
|
|
|
|
|
|
|
|
|
|
|
|
These proposals provide sets of constants with specified operational behavior.
|
|
|
|
They affect the dynamic semantics of programs in fairly deep ways.
|
|
|
|
|
|
|
|
- [\#74](https://gitlab.haskell.org//haskell/prime/issues/74)[Concurrency](concurrency)
|
|
|
|
- [\#35](https://gitlab.haskell.org//haskell/prime/issues/35)[Foreign Function Interface](foreign-function-interface)
|
|
|
|
Primarily provides sets of constants with
|
|
|
|
specified operational behavior.
|
|
|
|
|
|
|
|
|
|
|
|
>
|
|
|
|
>
|
|
|
|
> (Deep questions about dynamic behavior)
|
|
|
|
>
|
|
|
|
>
|
|
|
|
|
|
|
|
- [\#74](https://gitlab.haskell.org//haskell/prime/issues/74) [Concurrency](concurrency)
|
|
|
|
- [\#35](https://gitlab.haskell.org//haskell/prime/issues/35) [Foreign Function Interface](foreign-function-interface)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- [\#39](https://gitlab.haskell.org//haskell/prime/issues/39) [Imprcise exceptions](imprecise-exceptions)
|
|
|
|
|
|
|
|
<table><tr><th> fix the lexical syntax for [QualifiedIdentifiers](qualified-identifiers) </th>
|
|
|
|
<th> [\#39](https://gitlab.haskell.org//haskell/prime/issues/39) </th>
|
|
|
|
<th> SM </th>
|
|
|
|
<th> </th>
|
|
|
|
<th> permit qualified identifiers in definitions?
|
|
|
|
</th></tr>
|
|
|
|
<tr><th> </th>
|
|
|
|
<th> </th>
|
|
|
|
<th> </th>
|
|
|
|
<th>
|
|
|
|
</th>
|
|
|
|
<th></th></tr>
|
|
|
|
<tr><th> [FlexibleInstances](flexible-instances) </th>
|
|
|
|
<th> [\#32](https://gitlab.haskell.org//haskell/prime/issues/32) </th>
|
|
|
|
<th> </th>
|
|
|
|
<th> </th>
|
|
|
|
<th> choice of instance conditions for termination of typechecking
|
|
|
|
</th></tr>
|
|
|
|
<tr><th> </th>
|
|
|
|
<th> </th>
|
|
|
|
<th> </th>
|
|
|
|
<th> </th>
|
|
|
|
<th> poor interaction with [NewtypeDeriving](newtype-deriving)?
|
|
|
|
</th></tr>
|
|
|
|
<tr><th> </th>
|
|
|
|
<th> </th>
|
|
|
|
<th> </th>
|
|
|
|
<th>
|
|
|
|
</th>
|
|
|
|
<th></th></tr>
|
|
|
|
<tr><th> add [NewPragmas](new-pragmas) </th>
|
|
|
|
<th> [\#51](https://gitlab.haskell.org//haskell/prime/issues/51) </th>
|
|
|
|
<th> JM </th>
|
|
|
|
<th> </th>
|
|
|
|
<th> choose specific pragmas to standardize
|
|
|
|
</th></tr>
|
|
|
|
<tr><th> </th>
|
|
|
|
<th> </th>
|
|
|
|
<th> </th>
|
|
|
|
<th>
|
|
|
|
</th>
|
|
|
|
<th></th></tr>
|
|
|
|
<tr><th> make [Underscore](underscore) caseless </th>
|
|
|
|
<th> [\#72](https://gitlab.haskell.org//haskell/prime/issues/72) </th>
|
|
|
|
<th> RN </th>
|
|
|
|
<th> </th>
|
|
|
|
<th> treatment of underscore-only identifiers
|
|
|
|
</th></tr>
|
|
|
|
<tr><th> </th>
|
|
|
|
<th> </th>
|
|
|
|
<th> </th>
|
|
|
|
<th>
|
|
|
|
</th>
|
|
|
|
<th></th></tr>
|
|
|
|
<tr><th> [BangPatterns](bang-patterns) </th>
|
|
|
|
<th> [\#76](https://gitlab.haskell.org//haskell/prime/issues/76) </th>
|
|
|
|
<th> </th>
|
|
|
|
<th> </th>
|
|
|
|
<th> top-level bang patterns
|
|
|
|
</th></tr>
|
|
|
|
<tr><th> </th>
|
|
|
|
<th> </th>
|
|
|
|
<th> </th>
|
|
|
|
<th> </th>
|
|
|
|
<th> interaction with ! as an operator
|
|
|
|
</th></tr>
|
|
|
|
<tr><th> </th>
|
|
|
|
<th> </th>
|
|
|
|
<th> </th>
|
|
|
|
<th> </th>
|
|
|
|
<th> bang-pattern polymorphism
|
|
|
|
</th></tr>
|
|
|
|
<tr><th> </th>
|
|
|
|
<th> </th>
|
|
|
|
<th> </th>
|
|
|
|
<th> </th>
|
|
|
|
<th> existentials and bang patterns
|
|
|
|
</th></tr>
|
|
|
|
<tr><th> </th>
|
|
|
|
<th> </th>
|
|
|
|
<th> </th>
|
|
|
|
<th>
|
|
|
|
</th>
|
|
|
|
<th></th></tr>
|
|
|
|
<tr><th> [ScopedTypeVariables](scoped-type-variables) </th>
|
|
|
|
<th> [\#67](https://gitlab.haskell.org//haskell/prime/issues/67), [\#81](https://gitlab.haskell.org//haskell/prime/issues/81) </th>
|
|
|
|
<th> MS </th>
|
|
|
|
<th> </th>
|
|
|
|
<th> specification of syntax that binds type variables
|
|
|
|
</th></tr>
|
|
|
|
<tr><th> </th>
|
|
|
|
<th> </th>
|
|
|
|
<th> </th>
|
|
|
|
<th>
|
|
|
|
</th>
|
|
|
|
<th></th></tr>
|
|
|
|
<tr><th> generalized deriving for newtype ([NewtypeDeriving](newtype-deriving)) </th>
|
|
|
|
<th> [\#52](https://gitlab.haskell.org//haskell/prime/issues/52) </th>
|
|
|
|
<th> JM </th>
|
|
|
|
<th> </th>
|
|
|
|
<th> specification that does not reference "the same representation"
|
|
|
|
</th></tr>
|
|
|
|
<tr><th> </th>
|
|
|
|
<th> </th>
|
|
|
|
<th> </th>
|
|
|
|
<th> </th>
|
|
|
|
<th> overlap with [TypeSynonymInstances](type-synonym-instances)
|
|
|
|
</th></tr>
|
|
|
|
<tr><th> remove [FixityResolution](fixity-resolution) from the context-free grammar </th>
|
|
|
|
<th> [\#30](https://gitlab.haskell.org//haskell/prime/issues/30) </th>
|
|
|
|
<th> SM </th>
|
|
|
|
<th> </th>
|
|
|
|
<th> None
|
|
|
|
</th></tr>
|
|
|
|
<tr><th> </th>
|
|
|
|
<th> </th>
|
|
|
|
<th> </th>
|
|
|
|
<th>
|
|
|
|
</th>
|
|
|
|
<th></th></tr>
|
|
|
|
<tr><th> improve [Defaulting](defaulting) rules </th>
|
|
|
|
<th> [\#21](https://gitlab.haskell.org//haskell/prime/issues/21) </th>
|
|
|
|
<th> </th>
|
|
|
|
<th> </th>
|
|
|
|
<th> scope of default clauses
|
|
|
|
</th></tr>
|
|
|
|
<tr><th> </th>
|
|
|
|
<th> </th>
|
|
|
|
<th> </th>
|
|
|
|
<th> </th>
|
|
|
|
<th> impact on existing defaults
|
|
|
|
</th></tr>
|
|
|
|
<tr><th> </th>
|
|
|
|
<th> </th>
|
|
|
|
<th> </th>
|
|
|
|
<th>
|
|
|
|
</th>
|
|
|
|
<th></th></tr>
|
|
|
|
<tr><th> [KindAnnotations](kind-annotations) </th>
|
|
|
|
<th> [\#84](https://gitlab.haskell.org//haskell/prime/issues/84) </th>
|
|
|
|
<th> BH, AL </th>
|
|
|
|
<th> </th>
|
|
|
|
<th> None
|
|
|
|
</th></tr>
|
|
|
|
<tr><th> </th>
|
|
|
|
<th> </th>
|
|
|
|
<th> </th>
|
|
|
|
<th>
|
|
|
|
</th>
|
|
|
|
<th></th></tr>
|
|
|
|
<tr><th> [MonomorphicPatternBindings](monomorphic-pattern-bindings) </th>
|
|
|
|
<th> [\#103](https://gitlab.haskell.org//haskell/prime/issues/103) </th>
|
|
|
|
<th> RN </th>
|
|
|
|
<th> </th>
|
|
|
|
<th> treatment of pattern bindings with explicit type signatures
|
|
|
|
</th></tr>
|
|
|
|
<tr><th> </th>
|
|
|
|
<th> </th>
|
|
|
|
<th> </th>
|
|
|
|
<th>
|
|
|
|
</th>
|
|
|
|
<th></th></tr></table>
|
|
|
|
|
|
|
|
|
|
|
|
- [\#39](https://gitlab.haskell.org//haskell/prime/issues/39)[Imprcise exceptions](imprecise-exceptions) |
|
|
\ No newline at end of file |