---
type: mixed
---


## Definition
- Pure mathematical functions
- Declarative paradigm
	- Instead of writing step-by-step, we define the desired outcome
- Immutable data
- => No/Less side effects
- Programs are easier to verify
	- We can mathematically prove the algorithms


## Lazy vs. Strict
- Calculations are delayed until the results are actually needed

### Example
Imagine a list of numbers, but you only need the first one that meets a condition. With lazy evaluation, the program stops processing the list as soon as it finds the result, instead of checking every number.



