Draft — This is a work in progress, not an official release of the Haskell 2010 Revised Language Report.

Preface to the Revised Report

Over 16 years have passed since the publication of the Haskell 2010 language report, and the Haskell that we write today has evolved in many ways, some of which are incompatible with the language specified in the Haskell 2010 language report. In order to account for this change we saw the need to compile a revised version of the Haskell 2010 language report which does not add any novel language features but brings the report in line with the version of Haskell 2010 implemented by compilers and maintainers of the standard libraries. This revised report is the result of that effort.

Organization of the Revised Report

In distinction to the previous version of the Haskell 2010 language report, this revision separates out documentation of the standard libraries. These standard libraries are now available in the form of a zero-dependency Haskell package which makes the API specification machine readable and allows to generate documentation using standard Haskell tools like Haddock.

Changes to the Report

Forall as a keyword

The definition of the nonterminal reservedid has been changed to also include the terminal forall as a reserved identifier.

Decimal characters in numeric literals

The definitions of the nonterminals decimal and hexit have been changed to exclude Unicode decimal digits other than 0 to 9.

Removal of datatype contexts from the standard libraries

The datatype contexts have been removed from the standard libraries. Note that datatype contexts themselves are not removed from the language.

Remove mutually recursive modules

The requirement to support mutually recursive module imports has been lifted: Implementations are only required to support acyclic module import graphs.

Derived Instances of Ix

The information that Haskell allows to derive instances of the Ix class from the module Data.Ix, and how those instances look like, has been moved from the library report to Chapter 11.

Updates to the Num typeclass

Show and Eq are no longer required as superclasses of Num.