TL;DR1 A programming paradigm that uses functions as a primary way to declare how it should run given input.
Important characteristics:
- Immutability
- State can’t be changed, new state has to be calculated.
- Predictable results.
- Thread safety.
- etc..
- State can’t be changed, new state has to be calculated.
- Pure functions (no side effects).
- Referential Transparency.
- A pure function can be replaced by it’s expression.