After the release of
Miranda by Research Software Ltd. in 1985, interest in lazy functional languages grew. By 1987, more than a dozen non-
strict, purely functional programming languages existed. Miranda was the most widely used, but it was
proprietary software. At the conference on
Functional Programming Languages and Computer Architecture (FPCA '87) in
Portland, Oregon, there was a strong consensus that a committee be formed to define an
open standard for such languages. The committee's purpose was to consolidate existing
functional languages into a common one to serve as a basis for future research in functional-language design.
Haskell 1.0 to 1.4 Haskell was developed by a committee, attempting to bring together off-the-shelf solutions where possible.
Type classes were first proposed by
Philip Wadler and
Stephen Blott to address the ad hoc handling of
equality types and
arithmetic overloading in languages at the time. In early versions of Haskell up until and including version 1.2, user interaction and
input/output (IO) were handled by both
streams-based and
continuation-based mechanisms, which were widely considered unsatisfactory. In version 1.3,
monadic IO was introduced, along with the generalisation of type classes to higher kinds (
type constructors). Along with "do notation", which provides
syntactic sugar for the type class, this gave Haskell an
effect system that maintained
referential transparency and was convenient. Another notable change in early versions was the moving of the "
sequential evaluation" operation (which creates a
data dependency between values, and is used in lazy languages to avoid excessive memory consumption) from a type class to a standard function to make refactoring more practical. The first version of Haskell ("Haskell 1.0") was defined in 1990. The committee's efforts resulted in a series of language definitions (1.0, 1.1, 1.2, 1.3, and 1.4). es in the
Haskell Prelude as of GHC 7.10. The inclusion of and (with corresponding changes to the
type signatures of some functions), and of as intermediate between and , are deviations from the Haskell 2010 standard.
Haskell 98 In late 1997, the series culminated in
Haskell 98, intended to specify a stable, minimal, portable version of the language and an accompanying standard
library for teaching, and as a base for future extensions. The committee expressly welcomed creating extensions and variants of Haskell 98 via adding and incorporating experimental features. In February 1999, the Haskell 98 language standard was originally published as
The Haskell 98 Report. In January 2003, a revised version was published as
Haskell 98 Language and Libraries: The Revised Report. The language continues to evolve rapidly, with the
Glasgow Haskell Compiler (GHC) implementation representing the current
de facto standard.
Haskell 2010 In early 2006, the process of defining a successor to the Haskell 98 standard, informally named
Haskell Prime, began. This was intended to be an ongoing incremental process to revise the language definition, producing a new revision up to once per year. The first revision, named
Haskell 2010, was announced in November 2009 == Features ==