Haskell

[26][27] Designed for teaching, research, and industrial applications, Haskell pioneered several programming language features such as type classes, which enable type-safe operator overloading, and monadic input/output (IO).

[29][30][31] As of May 2021[update], Haskell was the 28th most popular programming language by Google searches for tutorials,[32] and made up less than 1% of active users on the GitHub source code repository.

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.

Along with "do notation", which provides syntactic sugar for the Monad type class, this gave Haskell an effect system that maintained referential transparency and was convenient.

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.

[27] The language continues to evolve rapidly, with the Glasgow Haskell Compiler (GHC) implementation representing the current de facto standard.

Haskell 2010 is an incremental update to the language, mostly incorporating several well-used and uncontroversial features previously enabled via compiler-specific flags.

Its principal innovation in this area is type classes, originally conceived as a principled way to add overloading to the language,[41] but since finding many more uses.

[42] The construct that represents side effects is an example of a monad: a general framework which can model various computations such as error handling, nondeterminism, parsing and software transactional memory.

[43] An active, growing community exists around the language, and more than 5,400 third-party open-source libraries and tools are available in the online package repository Hackage.

As the Integer type has arbitrary-precision, this code will compute values such as factorial 100000 (a 456,574-digit number), with no loss of precision.

Robert Harper, one of the authors of Standard ML, has given his reasons for not using Haskell to teach introductory programming.

Hierarchy of type classes in the Haskell prelude as of GHC 7.10. The inclusion of Foldable and Traversable (with corresponding changes to the type signatures of some functions), and of Applicative as intermediate between Functor and Monad, are deviations from the Haskell 2010 standard.