Side effects are actions of a function which is not returning a value (e.g. sending an email, modifying global state).
Pure functions are void of side effects and depend only on their inputs. Same inputs will return the same output.
Functional programming puts the code into three different categories:
- Actions (dependend on when or how many times they are called)
- Calculations (executable)
- Data