In functional programming, the concept of a pure function is one that holds the following two properties:
- The function should always return the same output for the same input.
- The function should not create any side effects.
The first property means that, when a function is invoked, the value returned should always be the same whenever the same input is used. A simple example is abs. The absolute value of an integer is always the same for the same input. A pure function can depend only on the input, but it does not have to necessarily use all the input types.
The second property is that a function should not cause any observable changes outside the function. So, the function cannot depend on any external mutable state, change variables that exist outside the function, or write I/O.
If a function is said to be pure, then the function can be replaced at the call...