Parte I. Basi funzionali
La programmazione funzionale non è più complicata della programmazione orientata agli oggetti con il suo stile di codifica prevalentemente imperativo, ma è solo un modo diverso di affrontare gli stessi problemi. Ogni problema che si può risolvere in modo imperativo può essere risolto anche in modo funzionale.
La matematica crea le basi per la programmazione funzionale, rendendola più difficile da approcciare rispetto alla mentalità orientata agli oggetti. Ma proprio come l'apprendimento di una nuova lingua straniera, le somiglianze e le radici condivise diventano più visibili con il tempo, fino a quando non scatta la molla.
Puoi implementare quasi tutti i concetti di cui sopra senza l'espressione Lambda di Java. Rispetto ad altri linguaggi, però, il risultato non sarà così elegante e conciso. Gli strumenti funzionali disponibili in Java ti permettono di implementare questi concetti e idiomi funzionali in modo meno prolisso e più conciso ed efficiente.