(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).
(from FOLDOC)