| | | corso | | | |
Linguaggi funzionali
Codice: | AA240 | Crediti: | 6 | Semestre: | 1 | Sigla: | LF | |
|
Settore disciplinare: | INF/01 - Informatica |
Docente
Marco Bellia
Tel. 0502212781Prerequisiti
Oltre alla conoscenza della programmazione di base, si richiede la conoscenza delle pricipali nozioni di struttura dei linguaggi di programmazione: Sintassi, Semantica e Metodologie di programmazione.
Obiettivi di apprendimento
Analizzare i principi che stanno alla base della programmazione funzionale e della struttura dei linguaggi funzionali. Attraverso l'apprendimento del linguaggio Haskell, conoscere ed utilizzare nuove metodologie di programmazione e rapida prototipazione quali quella Higher Order, a Combinatori, Lazy programming, Monadica, Politipica. Attraverso il confronto tra programmazione Funzionale, Imperativa e Object Oriented, sviluppare capacitą per utilizzare meglio le metodologie di programmazione e le opportunitą offerte dall'integrazione die vari paradigmi di programmazione
Programma
-
Introduzione ai linguaggi funzionali: il valore funzionale, trasparenza referenziale, parametri vs. variabili, combinatori, riduzione di termine, il dominio numerabile e la macchina funzionale pura. (2 ore)
-
Dal Lambda Calcolo alle Strutture di programmazione funzionale: astrazione funzionale, astrazione di dati, tipi. (6 ore)
-
Haskell: Programmazione. Script, moduli, termini, genericitą, polimorfimo e overloading, costruttori lazy, list comprehension. (6 ore)
-
Metodologie di programmazione: Higher Order, a Combinatori, Lazy programming, con Stato, Monadica, Politipica (8 ore)
-
Semantica assiomatica: Riduzione, Punti fissi e Ricorsione. Strategie di valutazione: Eager e lazy evaluation. Altre semantiche. Semantica
per traduzione. (4 ore)
-
Macchine Funzionali: riduzione termine, grafo, SECD (2 ore)
-
Conclusioni: applicazioni, integrazione di paradigmi. (2 ore)
Ore lezione: | 30 | Ore esercitazione: | 15 | | | |