A property of a function signifying that evaluation of the function with a particular set of arguments always returns the same value, whatever the context in which evaluation takes place. In programming terms this means that the function must not exhibit any side effects, i.e. it must not reference or change variables defined outside the function, except for the variables passed as parameters.