Questo libro costituisce un'introduzione alla programmazione funzionale, con l'obiettivo di fornire sia i concetti e le tecniche di base utilizzate nei moderni linguaggi di programmazione funzionale, sia i fondamenti teorici che sono alla base di essi. Il libro è suddiviso in due parti. La prima parte è un'introduzione alla programmazione In Objective Carml, utilizzato come linguaggio di riferimento per illustrare i principi della programmazione funzionale. Particolare attenzione viene dedicata alla programmazione con funzioni di ordine superiore, che vengono introdotte fin dal primo capitolo, alla metodologia della ricorsione e alle strutture di dati fonda mentali, ponendo in luce la relazione tra tipi di dati induttivi, definizioni ricorsive e dimostrazioni induttive. Sono illustrati infine i concetti fondamentali del sistema dei moduli e il nucleo della programmazione imperativa in Objective Carml. La seconda parte illustra i fondamenti del paradigma del "calcolo come riduzione" alla base della programmazione funzionale. Essa contiene un'introduzione al lambda-calcolo, con una sintetica illustrazione del suo ruolo nello studio del concetto di calcolabilità e decidibilità. L'introduzione ai fondamenti della programmazione funzionale è completata dalla descrizione del sistema dei tipi dei linguaggi della classe ML e dall'analisi del concetto di valutazione in un ambiente, che evidenzia la differenza tra determinazione statica e dinamica del campo d'azione delle dichiarazioni. Il libro è il frutto di una decina d'anni di esperienza nei corsi di Fondamenti di Informatica II prima, di Programmazione Funzionale poi, presso la Facoltà di Ingegneria dell'Università degli Studi di Roma Tre.