functional programming
<programming> (FP) A program in a functional language consists of a set
of (possibly recursive) function definitions and an expression whose value is
output as the program's result. Functional languages are one kind of declarative
language. They are mostly based on the typed lambda-calculus with constants.
There are no side-effects to expression evaluation so an expression, e.g. a
function applied to certain arguments, will always evaluate to the same value
(if its evaluation terminates). Furthermore, an expression can always be
replaced by its value without changing the overall result (referential
transparency).
The order of evaluation of subexpressions is determined by the language's
evaluation strategy. In a strict (call-by-value) language this will specify that
arguments are evaluated before applying a function whereas in a non-strict
(call-by-name) language arguments are passed unevaluated.
Programs written in a functional language are generally compact and elegant, but
have tended, until recently, to run slowly and require a lot of memory.
Examples of purely functional languages are Clean, FP, Haskell, Hope, Joy, LML,
Miranda, and SML. Many other languages such as Lisp have a subset which is
purely functional but also contain non-functional constructs.
See also lazy evaluation, reduction.
Lecture notes. or the same in dvi-format.
FAQ.
SEL-HPC Article Archive.
(2003-03-25)
Nearby terms:
functionality « functional language « functional
program «
functional programming » functional programming
language » functional requirements » functional
specification
|