Linguaggi funzionali

todo

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.

python_book5