Welcome to the Dictionary of Programming Languages, a compendium
of computer coding methods assembled to provide information and
aid your appreciation for computer science history.
Browse the dictionary by clicking on a section:
Get a full dump of the dictionary:
List of Names
- Language type:
F - Functional or lambda-based
Haskell is a non-strict purely functional
language, usually interpreted, designed
by representatives of the functional
programming community. The motivation
for Haskell was unification of functional
programming through the introduction of
a standard, widespread, modern language.
Haskell is a strongly typed language with
a rich type system. As in all functional
language, computations are performed only
by expressions; every expression has a
type. Primitive data types supplied by the
language include: integers, reals, characters,
lists, enumerations, tuples, and various
Haskell language implementations perform
static type checking prior to execution.
Haskell functions are defined as mappings
between parts of the type space. Of course,
composition, curried functions, lambda forms,
and higher-order functions are supported.
Haskell uses lazy evaluation.
also permits definition of operators as
functions (operator overloading), a convenience
feature that is unusual in functional programming
Modularity is explicitly supported by Haskell.
Programs consist of named modules. The
module facility provides distinct namespaces
and a means for defining encapsulated
abstract data types.
Haskell's module features allow some degree
of object oriented programming.
The Haskell standard library is written
using the module facility. It provides
additional numeric data types, various
standard aggregate types like arrays
and lists, system
interface and I/O facilities, time and date
handling, and random number generation.
Several free academic implementations of
Haskell are available, and good documentation
is available at the main Haskell web site.
Haskell Committee (Hughes, Wadler, Peterson et al), 1990.
- See Also:
The language is named after Haskell B. Curry,
a logician and mathematician who
worked on function theory; many ideas in
functional programming originated with Curry
(including the notion of curried functions).
Two main Haskell implementations,
Glasgow Haskell Compiler (GHC) and
Yale/Nottingham Hugs are based on C. GHC
is a Haskell->C translator, and Hugs
is an interpreter coded in C.
As of the end of 1997, the current version
of the Haskell language definition was 1.4.
A revised language definition, to be called
Standard Haskell, should be
finalized in 1998.
- Sample code:
-- Stable quicksort in Haskell by Lennart Augustsson
module QSort(sortLe, sort) where
sortLe :: (a -> a -> Bool) -> [a] -> [a]
sortLe le l = qsort le l 
sort :: (Ord a) => [a] -> [a]
sort l = qsort (<=) l 
-- qsort is stable and does not concatenate.
qsort le  r = r
qsort le [x] r = x:r
qsort le (x:xs) r = qpart le x xs   r
-- qpart partitions and sorts the sublists
qpart le x  rlt rge r =
-- rlt and rge are in reverse order and must be sorted with an
-- anti-stable sorting
rqsort le rlt (x:rqsort le rge r)
qpart le x (y:ys) rlt rge r =
if le x y then
qpart le x ys rlt (y:rge) r
qpart le x ys (y:rlt) rge r
Descriptions in this dictionary are ©1997-99 Neal Ziring. Some
examples copyright of their respective authors. Some
technologies and languages are trademarked. Permission to
copy descriptions is granted as long as authorship credit is preserved.
Comments on this dictionary, corrections and suggestions, are all welcome.
Please use email, the address is firstname.lastname@example.org
[Ziring MicroWeb Home]
Dictionary and script maintained by Neal Ziring, last major modifications 3/18/98. Most recent
additions to dictionary and master list, 1/00.