| Haskell (programming Language) |
Article Index for Haskell |
Website Links For Haskell |
Information AboutHaskell (programming Language) |
Haskell is a standardized Purely Functional Programming Language with Non-strict Semantics , named after the Logician Haskell Curry . HISTORY Following the release of Miranda , in 1985, functional languages proliferated. By 1987, there existed more than a dozen non-strict, purely functional programming languages. Of these Miranda was the most widely used, but was proprietary. At the conference on Functional Programming Languages and Computer Architecture (FPCA '87) in Portland, Oregon, a meeting was held during which strong consensus was found among the participants that a committee should be formed to define an Open Standard for such languages. This would have the express purpose of consolidating the existing languages into a common one that would serve as a basis for future research in language design.1 The first version of Haskell ("Haskell 1.0") was defined in 1990.2 The committee's efforts resulted in a series of language definitions, which in late 1997, 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. In January 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".3 The language continues to evolve rapidly, with the Hugs and GHC implementation (see below) 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.4 This process is intended to produce a minor revision of Haskell 98.5 FEATURES AND EXTENSIONS Characteristic features of Haskell include Pattern Matching , Currying , List Comprehension s list comprehension has been adopted by Python (programming Language) , Guard s, definable Operator s, and Single Assignment . The language also supports Recursive functions and Algebraic Data Type s, as well as Lazy Evaluation . Unique concepts include Monad s, and Type Class es. 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. Several variants have been developed: parallelizable versions from and Mondrian . There is also a Haskell-like language that offers a new method of support for GUI development called Concurrent Clean . Its biggest deviations from Haskell are use of Uniqueness Type s for input instead of Monads . APPLICATIONS Although Haskell has a comparatively small user community, its strengths have been well applied to a few projects. Audrey Tang 's Pugs is an implementation for the long-term forthcoming Perl 6 language with an interpreter and compilers that proved useful already after just a few months of its writing; similarly, GHC is often a testbed for advanced functional programming features and optimizations. Darcs is a revision control system, with several innovative features. Linspire GNU/Linux chose Haskell for system tools development.6 Xmonad is a Window Manager for the X Window System , written entirely in Haskell. EXAMPLES A simple example that is often used to demonstrate the syntax of Functional Language s is the Factorial function, shown in Haskell: fac :: Integer -> Integer fac 0 = 1 | |||||||||||||||||||||||||
|   | Let { Fac 0 | 1 fac n n > 0 = n fac (n-1) } in fac 5 |
|||||||||||||||||||||||
|   | Fibs | 0 : 1 : a+b a <- fibs b <- tail fibs |
|||||||||||||||||||||||
|   | <nowiki>fac N | (foldl () id -> xk k <- [1n ]) 1</nowiki> |
|||||||||||||||||||||||
|   | X | =y = x : xs#ys |
|||||||||||||||||||||||
|   | X<y | x : xs#yys |
|||||||||||||||||||||||
|   | X>y | y : xxs#ys |
|
|