Documenti full-text disponibili:
|
Documento PDF (Thesis)
Disponibile con Licenza: Salvo eventuali più ampie autorizzazioni dell'autore, la tesi può essere liberamente consultata e può essere effettuato il salvataggio e la stampa di una copia per fini strettamente personali di studio, di ricerca e di insegnamento, con espresso divieto di qualunque utilizzo direttamente o indirettamente commerciale. Ogni altro diritto sul materiale è riservato
Download (688kB)
|
Abstract
Nel corso degli anni i linguaggi di programmazione imperativi “mainstream” – come Java, Python e JavaScript – sono stati fortemente influenzati dal paradigma di programmazione funzionale, adottando e riconoscendo l’utilita` di numerose tecniche come funzioni anonime, tipi di dato algebrici (ADT), pattern matching, strutture dati immutabili, ecc.
Un approccio che ad oggi rimane prettamente confinato al mondo della pro- grammazione funzionale pura `e quello che consiste nel modellare esplicitamente gli effetti delle funzioni, separando in maniera netta – grazie al supporto automatico del type system – codice puro da quello che puo` presentare side effect.
In linguaggi di programmazione imperativi che non supportano nativamente questi meccanismi, `e possibile ottenere una separazione analoga utilizzando archi- tetture come quella “esagonale”. Tuttavia, il rispetto di queste buone pratiche di programmazione `e lasciato interamente all’autodisciplina del programmatore e non `e imposto automaticamente dal compilatore. La risultante presenza incontrollata di side effect ha l’effetto di creare reti di dipendenze invisibili che rendono complesso ragionare sulle propriet`a del codice, testarlo o effettuare refactoring.
L’obiettivo di questa tesi `e fornire una visione complessiva delle principali tecniche che possono essere adottate per modellare e rendere esplicita la presenza dei side effect nelle funzioni: Monad Transformer Library (MTL) e free monad. Infine, viene mostrato un approccio emergente basato sull’utilizzo degli effetti algebrici. Tutti i meccanismi analizzati sono introdotti in maniera graduale accompagnando la trattazione con diversi esempi e frammenti di codice che evidenziano i benefici che queste tecniche possono apportare.
Abstract
Nel corso degli anni i linguaggi di programmazione imperativi “mainstream” – come Java, Python e JavaScript – sono stati fortemente influenzati dal paradigma di programmazione funzionale, adottando e riconoscendo l’utilita` di numerose tecniche come funzioni anonime, tipi di dato algebrici (ADT), pattern matching, strutture dati immutabili, ecc.
Un approccio che ad oggi rimane prettamente confinato al mondo della pro- grammazione funzionale pura `e quello che consiste nel modellare esplicitamente gli effetti delle funzioni, separando in maniera netta – grazie al supporto automatico del type system – codice puro da quello che puo` presentare side effect.
In linguaggi di programmazione imperativi che non supportano nativamente questi meccanismi, `e possibile ottenere una separazione analoga utilizzando archi- tetture come quella “esagonale”. Tuttavia, il rispetto di queste buone pratiche di programmazione `e lasciato interamente all’autodisciplina del programmatore e non `e imposto automaticamente dal compilatore. La risultante presenza incontrollata di side effect ha l’effetto di creare reti di dipendenze invisibili che rendono complesso ragionare sulle propriet`a del codice, testarlo o effettuare refactoring.
L’obiettivo di questa tesi `e fornire una visione complessiva delle principali tecniche che possono essere adottate per modellare e rendere esplicita la presenza dei side effect nelle funzioni: Monad Transformer Library (MTL) e free monad. Infine, viene mostrato un approccio emergente basato sull’utilizzo degli effetti algebrici. Tutti i meccanismi analizzati sono introdotti in maniera graduale accompagnando la trattazione con diversi esempi e frammenti di codice che evidenziano i benefici che queste tecniche possono apportare.
Tipologia del documento
Tesi di laurea
(Laurea magistrale)
Autore della tesi
Cavalieri, Giacomo
Relatore della tesi
Correlatore della tesi
Scuola
Corso di studio
Ordinamento Cds
DM270
Parole chiave
effetti,effect system,MTL,monade,free monad,monad transformer,scala,haskell,koka,algebraic effects
Data di discussione della Tesi
17 Marzo 2023
URI
Altri metadati
Tipologia del documento
Tesi di laurea
(NON SPECIFICATO)
Autore della tesi
Cavalieri, Giacomo
Relatore della tesi
Correlatore della tesi
Scuola
Corso di studio
Ordinamento Cds
DM270
Parole chiave
effetti,effect system,MTL,monade,free monad,monad transformer,scala,haskell,koka,algebraic effects
Data di discussione della Tesi
17 Marzo 2023
URI
Statistica sui download
Gestione del documento: