Linguaggi funzionali
La programmazione funzionale è un paradigma in cui il programma fa solo uso di asserzioni matematiche, e quindi le funzioni non producono effetti collaterali nel programma.
Nella programmazione funzionale non esiste il concetto di storage come relazione tra un nome e una cella in memoria, ma esiste il concetto di ambiente (mapping tra nomi e valori). Il comportamento delle funzioni quindi è dato esclusivamente dai parametri delle stesse.
Python non è un linguaggio funzionale, perché il seguente snippet produce un side effect, ovver la lista y viene modificata.
```python
def f(x):
x[0]=0
y = [1,2]
f(y)
print(y) # [0,2]Paradigmi funzionali in Python
Però Python introduce alcuni paradigmi funzionali, come le lambda functions, i decoratori e map-reduce.