Difference between revisions of "Language and library specification"
CaleGibbard (talk  contribs) (fix hierarchical modules link) 
m (→Future revisions of the language: archived dead link) 

(42 intermediate revisions by 25 users not shown)  
Line 1:  Line 1:  
−  {{unknown copyright}} 

+  [[Category:Language]] 

−  <H1>Definition of Haskell and the Standard Libraries</H1> 

−  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 Haskell 2010 report == 

−  The Revised Report is published by Cambridge University Press, as a book [http://titles.cambridge.org/catalogue.asp?isbn=0521826144 "Haskell 98 language and libraries: the Revised Report"], and also as a 

+  The Haskell 2010 report was published in July 2010, and is the current definition of the Haskell language. It is freely available online, in the following formats: 

+  
+  * read it online: [http://www.haskell.org/onlinereport/haskell2010 The Haskell 2010 Report] 

+  * [http://haskell.org/definition/haskell2010.pdf PDF] [1368K] 

+  * [http://haskell.org/definition/haskell2010html.tar.gz HTML] (tar + gzip) [336K] 

+  
+  Note that these documents are intended to define Haskell and are not appropriate for learning Haskell. For the latter have a look at the [[Books and tutorialsHaskell bookshelf]]. 

+  
+  If you find a mistake in the report, please send it to the [http://www.haskell.org/mailman/listinfo/haskellprime haskellprime mailing list] (you have to register first), or send it directly to one of the current [http://web.archive.org/web/20191221115749/prime.haskell.org/wiki/Committee committee members]. 

+  
+  The sources for the Haskell report are also available: 

+  
+  * [http://darcs.haskell.org/haskell2010report Haskell 2010 report darcs repository] 

+  
+  == The Haskell 98 report == 

+  
+  The Haskell 98 (Revised) Report is published by Cambridge University Press, as a book [http://www.cambridge.org/uk/catalogue/catalogue.asp?isbn=0521826144 "Haskell 98 language and libraries: the Revised Report"], and also as a 

Special Issue of the Journal of Functional Programming 13(1) Jan 2003. 
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 [[BooksHaskell bookshelf]]. 

+  The Haskell 98 report is also available online in a number of formats: 

* [http://haskell.org/onlinereport/ The Haskell 98 Report (Revised)] 
* [http://haskell.org/onlinereport/ The Haskell 98 Report (Revised)] 

Line 15:  Line 30:  
** [http://haskell.org/definition/haskell98report.pdf.gz PDF] (gzip) [650K] 
** [http://haskell.org/definition/haskell98report.pdf.gz PDF] (gzip) [650K] 

** [http://www.haskell.ru/ A translation of the full report into Russian] 
** [http://www.haskell.ru/ A translation of the full report into Russian] 

+  ** [http://www.cs.uu.nl/wiki/pub/FP/CourseLiterature/haskellsyntaxmain.pdf Syntax diagrams for Haskell], by Jeroen Fokker. The accompanying text is in Dutch, but the syntax diagrams are legible in any language. 

+  ** [http://www.hck.sk/users/peter/HaskellEx.htm The Haskell 98 grammar hyperlinked] by Peter Hercek. 

−  [http://haskell.org/ 
+  [http://haskell.org/definition/haskell98bugs.html 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 [http://cvs.haskell.org/cgibin/cvsweb.cgi/haskellreport/report 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. 
The source for the Report is in a [http://cvs.haskell.org/cgibin/cvsweb.cgi/haskellreport/report 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. 

−  The report still has minor bugs. There are tracked at the [http://haskell.org/ 
+  The report still has minor bugs. There are tracked at the [http://haskell.org/definition/haskell98revisedbugs.html Haskell 98 bugs page]. Report any new bugs to [mailto:Malcolm.Wallace@cs.york.ac.uk Malcolm Wallace]. 
−  == Addenda to the 
+  == Addenda to the report == 
−  A number of conservative extensions to the 

+  These addenda to the Haskell 98 report were both incorporated in the Haskell 2010 report, so they are included here only for historical interest. 

−  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 

+  Finalised: 

−  extension provided by some Haskell implementation is that a 

+  #[http://www.cse.unsw.edu.au/~chak/haskell/ffi/ Foreign Function Interface] (FFI) 

−  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). 

Candidates: 
Candidates: 

#[http://www.haskell.org/hierarchicalmodules/ Hierarchical modules] 
#[http://www.haskell.org/hierarchicalmodules/ Hierarchical modules] 

−  Finalised: 

+  == Future revisions of the language == 

−  #[http://www.cse.unsw.edu.au/~chak/haskell/ffi/ Foreign Function Interface] (FFI) 

−  == Related Work == 

+  Language revisions are expected to be produced once per year, starting with Haskell 2010. The continuous revision process is called [http://web.archive.org/web/20191229055836/https://prime.haskell.org/ Haskell Prime]. 

−  <DL> 

+  == Related work == 

−  <DT>[http://www.pms.informatik.unimuenchen.de/mitarbeiter/panne/haskell_libs/hsparser.html HParser]<DD>A parser for Haskell written purely in Haskell (using the Happy parser generator). 

+  
−  <DT>[http://www.cse.ogi.edu/~mpj/thih/ Typing Haskell in Haskell]<DD>A Haskell program that implements a Haskell typechecker, thus providing a mathematically rigorous specification in a notation that is familiar to Haskell users. 

+  ;[http://hackage.haskell.org/package/haskellsrc1.0.1.6/docs/LanguageHaskellParser.html Language.Haskell] 

−  </DL> 

+  :A lexer, parser and pretty printer for Haskell, available in the haskellsrc library 

+  
+  ;[http://citeseer.ist.psu.edu/jones99typing.html 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. Its web page is cached [http://web.archive.org/web/20060516235636/www.cse.ogi.edu/~mpj/thih/ here]. 

+  
+  ;[http://web.archive.org/web/20080819114435/www.cse.unsw.edu.au/~sjw/noncvs/code/coreLF.tar.gz] 

+  :Core language operational semantics in Twelf. 

+  
+  ;[http://www.cs.nott.ac.uk/~gmh/papers/11.ps] 

+  :A space semantics for the core language. Adam Bakewell. Proc. 2000 Haskell Workshop. September 2001. 

+  
+  ;[http://www.ii.uni.wroc.pl/~dabi/publications/Haskell10/pirogbiernackihs10.pdf A Systematic Derivation of the STG Machine Verified in Coq] 

+  :Pirog and Dariusz Biernacki, 2010 

+  
+  ;[http://portal.acm.org/citation.cfm?id=888251.888262&coll=ACM&dl=ACM&CFID=99542784&CFTOKEN=30409113 STG machine model] 

+  :Formally verifying an STG machine 

+  
+  ;[http://portal.acm.org/citation.cfm?id=581692 A specification for the module system] 

== Historic development of Haskell == 
== Historic development of Haskell == 

The Haskell 98 report was released in February 1999; it is a 
The Haskell 98 report was released in February 1999; it is a 

−  refinement and simplification of Haskell 1.4. See the 
+  refinement and simplification of Haskell 1.4. See the [https://web.archive.org/web/20100716232801/http://haskell.cs.yale.edu/definition/aboutHaskell98.html Haskell 98 page] for more details on 
−  href="aboutHaskell98.html"> Haskell 98 page </a> for more details on 

Haskell 98 and changes from Haskell 1.4. 
Haskell 98 and changes from Haskell 1.4. 

Line 85:  Line 102:  
** [http://haskell.org/definition/haskellreport1.3.ps.gz Postscript] (gzip) [140 pages, 225 K] 
** [http://haskell.org/definition/haskellreport1.3.ps.gz Postscript] (gzip) [140 pages, 225 K] 

** [http://haskell.org/definition/from12to13.html Changes from 1.2] 
** [http://haskell.org/definition/from12to13.html Changes from 1.2] 

−  ** [http://www.cs.chalmers.se/~augustss/convert.html A short guide on converting programs from Haskell 1.2 to 1.3] 
+  ** [https://web.archive.org/web/20100420081340/http://www.cs.chalmers.se/~augustss/convert.html A short guide on converting programs from Haskell 1.2 to 1.3] 
* Haskell 1.2 report (March 1992) 
* Haskell 1.2 report (March 1992) 

** [http://haskell.org/definition/haskellreport1.2.ps.gz Postscript] (gzip) [176 pages, 230 K] 
** [http://haskell.org/definition/haskellreport1.2.ps.gz Postscript] (gzip) [176 pages, 230 K] 

* Haskell 1.1 report 
* Haskell 1.1 report 

** [http://haskell.org/definition/haskellreport1.1.tar.gz Tarball] (gzip) [469 K] 
** [http://haskell.org/definition/haskellreport1.1.tar.gz Tarball] (gzip) [469 K] 

+  * Haskell 1.0 report 

+  ** [http://haskell.org/definition/haskellreport1.0.ps.gz Postscript] (gzip) [133 pages, 230 K] 

** [http://haskell.org/definition/haskellreport1.0.tar.gz Tarball] (gzip) [125 K] 
** [http://haskell.org/definition/haskellreport1.0.tar.gz Tarball] (gzip) [125 K] 

Old definitions of the semantics of Haskell: 
Old definitions of the semantics of Haskell: 

−  * [http://haskell.org/onlinereport/longsemantics.ps.gz The Static Semantics of Haskell] by Simon Peyton Jones and Philip Wadler, Unpublished Technical Report, University of Glasgow, 1991, 49 pages. 

+  
−  +  ;[http://research.microsoft.com/~simonpj/Papers/staticsemantics.dvi.gz The Static Semantics of Haskell] 

+  :Simon Peyton Jones and Philip Wadler, Unpublished Technical Report, University of Glasgow, 1991, 49 pages. 

+  
+  ;[http://citeseer.ist.psu.edu/hammond92dynamic.html A Dynamic Semantics for Haskell (Draft)] 

+  :Kevin Hammond and Cordelia Hall, University of Glasgow, 1992, 23 pages. 
Latest revision as of 01:33, 1 March 2020
Contents
The Haskell 2010 report
The Haskell 2010 report was published in July 2010, and is the current definition of the Haskell language. It is freely available online, in the following formats:
 read it online: The Haskell 2010 Report
 PDF [1368K]
 HTML (tar + gzip) [336K]
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.
If you find a mistake in the report, please send it to the haskellprime mailing list (you have to register first), or send it directly to one of the current committee members.
The sources for the Haskell report are also available:
The Haskell 98 report
The Haskell 98 (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 Haskell 98 report is also available online in a number of formats:
 The Haskell 98 Report (Revised)
 HTML (tar + gzip) [202K]
 Postscript (gzip) [330K]
 PDF [820K]
 PDF (gzip) [650K]
 A translation of the full report into Russian
 Syntax diagrams for Haskell, by Jeroen Fokker. The accompanying text is in Dutch, but the syntax diagrams are legible in any language.
 The Haskell 98 grammar hyperlinked by Peter Hercek.
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.
The report still has minor bugs. There are tracked at the Haskell 98 bugs page. Report any new bugs to Malcolm Wallace.
Addenda to the report
These addenda to the Haskell 98 report were both incorporated in the Haskell 2010 report, so they are included here only for historical interest.
Finalised:
Candidates:
Future revisions of the language
Language revisions are expected to be produced once per year, starting with Haskell 2010. The continuous revision process is called Haskell Prime.
Related work
 Language.Haskell
 A lexer, parser and pretty printer for Haskell, available in the haskellsrc library
 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. Its web page is cached here.
 [1]
 Core language operational semantics in Twelf.
 [2]
 A space semantics for the core language. Adam Bakewell. Proc. 2000 Haskell Workshop. September 2001.
 A Systematic Derivation of the STG Machine Verified in Coq
 Pirog and Dariusz Biernacki, 2010
 STG machine model
 Formally verifying an STG machine
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 Haskell 98 page 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
 HTML (tar + gzip) [160K]
 Postscript (gzip) [300k]
 Original Haskell 98 library report
 HTML (tar + gzip) [76k]
 Postscript (gzip) [160K]
 Haskell 1.4 report
 HTML (tar + gzip) [125K]
 Postscript (gzip) [230k]
 Haskell 1.4 library report
 HTML (tar + gzip) [60k]
 Postscript (gzip) [100K]
 Changes from 1.3
 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
 Tarball (gzip) [469 K]
 Haskell 1.0 report
 Postscript (gzip) [133 pages, 230 K]
 Tarball (gzip) [125 K]
Old definitions of the semantics of Haskell:
 The Static Semantics of Haskell
 Simon Peyton Jones and Philip Wadler, Unpublished Technical Report, University of Glasgow, 1991, 49 pages.
 A Dynamic Semantics for Haskell (Draft)
 Kevin Hammond and Cordelia Hall, University of Glasgow, 1992, 23 pages.