A function is called pure if it corresponds to a function in the mathematical sense: it associates each possible input value with an output value, and does nothing else. In particular,
- it has no side effects, that is to say, invoking it produces no observable effect other than the result it returns; it cannot also e.g. write to disk, or print to a screen.
A pure function is trivially referentially transparent - it does not depend on anything other than its parameters, so when invoked in a different context or at a different time with the same arguments, it will produce the same result.
A programming language may be called purely functional if evaluation of expressions is pure.
There has been some debate in the past as to the precise meaning of these terms. See also: