Haskell is a standardized,
purely functional programming language with
non-strict semantics, named after
logician Haskell Curry.
Following the release of Miranda by Research Software Ltd, in 1985, interest in lazy functional languages grew.[citation needed] By 1987, more than a dozen non-strict, purely functional programming languages existed. Of these, Miranda was the most widely used, but was not in the public domain. At the conference on Functional Programming Languages and Computer Architecture (FPCA '87) in Portland, Oregon, a meeting was held during which participants formed a strong consensus that a committee should be formed to define an open standard for such languages. The committee's purpose was to consolidate the existing functional languages into a common one that would serve as a basis for future research in functional-language design.[2] The first version of Haskell ("Haskell 1.0") was defined in 1990.[3] The committee's efforts resulted in a series of language definitions. 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 the creation of extensions and variants of Haskell 98 via adding and incorporating experimental features.[citation needed]
In February 1999, the Haskell 98 language standard was originally published as "The Haskell 98 Report".[2] In January 2003, a revised version was published as "Haskell 98 Language and Libraries The Revised Report".[4] The language continues to evolve rapidly, with the GHC implementation representing the current de facto standard. In early 2006, the process of defining a successor to the Haskell 98 standard, informally named Haskell' ("Haskell Prime"), was begun.[5] This process is intended to produce a minor revision of Haskell 98.[6]
Characteristic features of Haskell include lazy evaluation, pattern matching, currying, list comprehensions [7], guards, definable operators, and single assignment. The language also supports recursive functions and algebraic data types. Less common concepts include monads, and type classes. The combination of such features can make functions which would be difficult to write in a procedural programming language almost trivial to implement in Haskell.[citation needed]