Introduzione alla Programmazione Funzionale
Questa e' la home page del corso "Introduzione alla Programmazione Funzionale".
Lezioni:
Questo e' il tentativo di orario per il corso:
- Prima Lezione: 2021/11/23, 9:30 -> 12:00
- Seconda Lezione: 2021/11/30, 9:30 -> 12:00
- Terza Lezione: 2021/12/03, 10:00 -> 12:30
- Quarta Lezione: 2021/12/07, 10:00 -> 12:30
- Quinta Lezione: 2021/12/10, via Maffi Aula 11, 10:00 -> 12:30
- Esercizi su lambda-calcolo e riduzione di lambda-espressioni complesse tramite tool automatici
- Primi esperimenti con Haskell
- Sesta Lezione: 2021/12/14, via Maffi Aula 5, 9:30 -> 12:00 (OKKIO! L'orario e' cambiato ancora!)
- Settima Lezione: 2021/12/17, sede centrale Aula 10, 10:00 -> 12:30
- Ottava Lezione: 2021/12/21, sede centrale Aula 10, 10:00 -> 12:30
Esempi ed esercizi:
- Primo esempio: calcolo del massimo comune divisore
Questo codice puo' essere testato usando una semplice
funzione main ed un
header file che descrive l'interfaccia software
della funzione
gcd()
- Secondo esempio: soluzione del problema delle torri di Hanoi
- Terzo esempio: fattoriale ed uso dello stack
Questo codice puo' essere testato usando una semplice
funzione main ed un
header file che descrive l'interfaccia software
della funzione
gcd()
- Quarto esempio: contatore implementato tramite chiusure
- Soluzione (errata) in C,
che evidenzia la differenza fra chiusure a puntatori a funzioni
- Soluzione in C++,
che evidenzia come le lambda expression del C++
implementino correttamente il concetto di chiusura
- Quinto esempio: passaggio dei parametri. Problema con il passaggio per valore in C++ e possibile soluzione.
- Sesto esempio: currying. Funzione somma curryificata e usando una coppia per gli argomenti.
- Settimo esempio: calcolo del Massimo Comun Divisore in Haskell.
Il codice mostra varie implementazioni definendo la funzione tramite lambda (ed usando la
tecnical del currying per gestire i due argomenti) o usando la definizione semplificata senza
lambda.
- Ottavo esempio: il fattoriale tail recursive in Haskell.
- Nono esempio: soluzione delle torri di Hanoi in Haskell:
- N-esimo esempio: come dire "Hello" in Haskell:
- Qualche esempio sui tipi di dato ricorsivi in Haskell:
- E per finire, un po' di esempi su Scala:
Dispense:
Link:
Esame:
L'esame sara' basato su un breve orale (riguardante gli argomenti discussi nel corso),
durante il quale potro' chiedere di scrivere codice usando un linguaggio di programmazione
funzionale a scelta dello studente.
Alternativamente, gli studenti che lo desiderano potranno decidere di presentare un piccolo
progetto, basando l'esame su una discussione del progetto stesso. In questo caso, devono
contattarmi via email prima di cominciare lo sviluppo del progetto.
Ho arbitrariamente fissato tre date peg gli appelli di esame, il 2 Febbraio, il
10 Giugno ed il 5 Settembre; gli studenti che intendessero sostenere l'esame
in altri giorni possono comunque farlo; devono solo contattarmi per fissare appelli
di esame in date diverse da quelle gia' proposte.