Language and library specification
(fix hierarchical modules link)
m (Definition moved to Language and library specification)
Revision as of 21:14, 20 February 2006
- The copyright status of this work is not known. Please help resolve this on the talk page.
1 Definition of Haskell and the Standard Libraries
The Haskell 98 Report has undergone an extensive process of revision since its publication in January 1999. This process converged in January 2003, producing the Revised Report.
The Revised Report is published by Cambridge University Press, as a book "Haskell 98 language and libraries: the Revised Report", and also as a Special Issue of the Journal of Functional Programming 13(1) Jan 2003.
The text and sources of the Report are neverthless still available online. Note that these documents are intended to define Haskell and are not appropriate for learning Haskell. For the latter have a look at the Haskell bookshelf.
- The Haskell 98 Report (Revised)
A complete list of all changes made to both reports between the Jan 1999 publication and the Revised Report (Dec 2002).
The source for the Report is in a publicly visible CVS repository. If you render the report in a new way that others may wish to use, please let us know and we'll add it to this web page. If you have any other ways to package the report please let us know and we'll add them.
1.1 Addenda to the Report
A number of conservative extensions to the base language Haskell 98 in the form of addenda to the language definition are under way. These extensions strive to complement the base language in areas that have not been covered during the design of Haskell 98, but which are perceived to be of crucial importance in some application areas. An effort is made to design these extensions to have minimal impact on existing Haskell 98 programs.
The benefit of a H98 Addendum over any random language extension provided by some Haskell implementation is that a H98 Addendum is a standardised design, and programs coded against such an addendum can be expected to be portable across implementations that support this standard. Generally, implementations of H98 are not required to implement all H98 Addenda, but if such an implementation does provide a feature that is covered by an addendum, it is expected that this extension conforms to that addendum (in the same way as it is expected to abide by the H98 language definition).
1.2 Related Work
- A parser for Haskell written purely in Haskell (using the Happy parser generator).
- Typing Haskell in Haskell
- A Haskell program that implements a Haskell typechecker, thus providing a mathematically rigorous specification in a notation that is familiar to Haskell users.
1.3 Historic development of Haskell
The Haskell 98 report was released in February 1999; it is a refinement and simplification of Haskell 1.4. See the <a href="aboutHaskell98.html"> Haskell 98 page </a> for more details on Haskell 98 and changes from Haskell 1.4.
The definition of Haskell version 1.4 was finished in April 1997. It contains just minor changes with respect to version 1.3 from May 1996, whereas the step from version 1.2 to version 1.3 was quite large.
- Original Haskell 98 report
- Original Haskell 98 library report
- Haskell 1.4 report
- Haskell 1.4 library report
- Haskell 1.3 report (May 1996)
- Postscript (gzip) [140 pages, 225 K]
- Changes from 1.2
- A short guide on converting programs from Haskell 1.2 to 1.3
- Haskell 1.2 report (March 1992)
- Postscript (gzip) [176 pages, 230 K]
- Haskell 1.1 report
Old definitions of the semantics of Haskell: