Haskell 98

At the 1997 Haskell Workshop in Amsterdam, several concerns were expressed about the development of Haskell: Haskell 98 is an attempt to address these concerns. It is intended to be a minor revision of Haskell 1.4, cleaning up traps but not adding major new functionality.

Haskell 98 will by no means be the last revision of Haskell. On the contrary, we design it knowing that new language extensions (multi-parameter type classes, universal and existential quantification, pattern guards, etc, etc) are well on the way. However, Haskell 98 will have a special status: the intention is that Haskell compilers will continue to support Haskell 98 (given an appropriate flag) even after later versions of the language have been defined, and so the name `Haskell 98' will refer to a fixed, stable language.

This document exhaustively lists all the differences between Haskell 1.4 and Haskell 98. Only a very short summary is given here, together with references to the report text. All section numbers refer to the Haskell 98 language and library reports.


Chapter 2: lexical structure


Chapter 3: expressions


Chapter 4: declarations


Chapter 5: modules


Chapter 6: basic types


Appendix A: standard prelude

Some of these changes have a minor equivalent change in Section 6.

Appendix B: syntax

Syntactic changes mentioned above are not repeated here.

Appendix D: derived instances


Haskell 98 libraries

Module Array

Module Ix

Module Char

Module List

Module Complex

Module Maybe

Module System

Module Directory

Module Time

Module Random

This library has been completely re-specified.

Reversed decisions

I finally decided not to implement two proposed decisions: Comments welcome.