|
|
|
# Organizing the Proposals
|
|
|
|
|
|
|
|
|
|
|
|
This page groups the various proposals for Haskell' into four distinct categories.
|
|
|
|
|
|
|
|
## 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
|
|
|
|
|
|
|
|
# Language Convenience
|
|
|
|
|
|
|
|
|
|
|
|
Primarily provides a convinient way to do
|
|
|
|
something that we could pretty much do something similar
|
|
|
|
previously.
|
|
|
|
|
|
|
|
>
|
|
|
|
> (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
|
|
|
|
|
|
|
|
|
|
|
|
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))
|
|
|
|
|
|
|
|
- [Relaxed dependency analysis](relaxed-dependency-analysis)
|
|
|
|
|
|
|
|
- Flexible instances
|
|
|
|
|
|
|
|
## Critical Constants
|
|
|
|
|
|
|
|
|
|
|
|
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> |
|
|
\ No newline at end of file |