Status quo della teoria delle categorie e monadi nella ricerca teorica in informatica?


17

Sfondo . Sono uno studente laureato che è interessato alla ricerca relativa alla teoria delle categorie, monadi e Haskell, e voglio trovare un argomento per la mia tesi di laurea in quella zona.

Ho guardato il giornale

e non ne capisco ancora molto. Probabilmente avrò bisogno di un po 'di tempo per capirlo appieno. Ma prima di dedicare più tempo allo studio, voglio ottenere una migliore comprensione del campo e del suo potenziale di ricerca. Ne ho parlato recentemente con un mio professore e mi ha detto che le monadi erano di moda nella comunità di ricerca negli anni '90, ma al giorno d'oggi sono fuori moda.

Pertanto , ora sto cercando un lavoro recente relativo alle monadi e mi chiedo:

  • In quali settori dell'informatica teorica si fa oggi la ricerca relativa alla teoria delle categorie e alle monadi?
  • Che tipo di ricerca è stata costruita o proposta sul lavoro di E. Moggi sulle monadi nella teoria della programmazione? C'è stato qualche seguito o continua ricerca relativa al suo articolo?

Prima di rispondere a questa domanda: non è a livello di ricerca, vero? Potrebbe essere più adatto a cs.stackexchange.com.
Andrej Bauer,

3
@AndrejBauer La mia tesi di laurea non sarà a livello di ricerca, ma la mia domanda riguarda la ricerca attuale o almeno la ricerca effettuata nell'ultimo decennio.
k.stm,

9
@AndrejBauer Non sono d'accordo. Il sito gemello è principalmente dedicato a compiti a casa, mentre qui è necessaria un'opinione di esperti.
Yuval Filmus,

@Kaveh Questa è stata la modifica drastica che hai appena fatto. Hai migliorato alcuni punti, ma ora non è più la domanda che mi ponevo. Quando avrò tempo domani, eseguirò il rollback di alcune delle tue modifiche. Ad esempio, è importante per me avere lo sfondo lì dentro. Per favore, dimmi quali cambiamenti pensi siano necessari e perché, quindi so cosa non ripristinare.
k.stm,

1
@Yuval, penso che molte persone in Informatica sarebbero fortemente in disaccordo con il tuo commento sul fatto che è principalmente per i compiti a casa e che gli esperti non sono presenti in Informatica . In questo caso Andrej ha risposto a oltre 100 domande su Informatica .
Kaveh,

Risposte:


15

Ci sono stati numerosi sviluppi riguardo all'uso delle monadi nella teoria del calcolo dall'opera di Eugenio Moggi. Non sono in grado di fornire un resoconto completo, ma qui ci sono alcuni punti che conosco, altri possono entrare in contatto con le loro risposte.

Esempi specifici di monadi

Non devi studiare la teoria super generale in ogni momento. Ci sono esempi di monadi che sono molto interessanti e sufficientemente complicati da riempire un'intera tesi di laurea.

Mi piace molto il blog di Dan Piponi in cui fornisce esempi sorprendenti di come le monadi possano essere usate per mescolare la programmazione funzionale e la matematica. Cerca le sue opere su nodi e trecce attraverso le monadi, per esempio.

Un altro esempio specifico di lunedì degno di studio è stato dato da Martin Escardo e Paulo Oliva nel contesto dei funzionali di selezione, vedere le loro funzioni di selezione, Bar Recursion e Backward Induction , o forse per interessarsi prima di leggere quali giochi sequenziali, il teorema di Tychonoff e il Lo spostamento a doppia negazione ha in comune (file Haskell e Agda associati qui ).

Sfondo matematico

Le monadi provengono dalla teoria delle categorie e sono molto più antiche di Eugenio Moggi. Potresti studiare la teoria di base se sei matematicamente incline. Ad esempio, potresti attaccare il teorema di monadicità di Beck . Un informatico teorico non può mai conoscere troppa matematica.

Variazioni su un tema

Potresti guardare qualcosa che non è strettamente monadi.

Ad esempio, Idiomi di Connor McBride e Ross Paterson : la programmazione applicativa con effetti mostra come si possono generalizzare le monadi a qualcosa che è praticamente rilevante e perspicace.

Oppure potresti vedere come vengono usati i comonad per modellare gli effetti computazionali. Qualcuno dovrebbe suggerire alcuni riferimenti per questo argomento, ma un buon inizio potrebbero essere le diapositive di David Overtone .

Teoria dei tipi modali

Nella teoria dei tipi dell'omotopia, così come nella teoria dei tipi in generale, le monadi appaiono nella forma della teoria dei tipi modali . Recentemente la teoria dei tipi modali è stata considerata nella teoria dei tipi di omotopia perché gli operatori di troncamento sono esempi di operatori modali. E poi c'è una teoria omotopica coesiva in cui gli operatori modali (che sono monadi) svolgono un ruolo essenziale.

Effetti e gestori algebrici

[Dichiarazione di non responsabilità: qui soffio parzialmente il mio corno.]

Qualche tempo fa Gordon Plotkin e John Power hanno ignorato che molti effetti computazionali non sono solo monadi, ma monadi speciali derivanti da teorie algebriche. Ciò ha portato a un trattamento completamente nuovo di effetti computazionali noto come effetti algebrici . Successivamente Gordon Plotkin e Matija Pretnar hanno introdotto i gestori e insieme agli effetti algebrici formano una teoria molto bella degli effetti computazionali. Un vantaggio di questo approccio è che le teorie algebriche possono essere facilmente combinate mentre le monadi no.

Potresti studiare in che modo esattamente gli effetti algebrici si collegano alle monadi. Potresti vedere come le persone implementano effetti e gestori algebrici, dire nel linguaggio Eff o in Haskell come biblioteca . Questa è la ricerca più o meno attuale.


Ciao, grazie per la risposta! Ho fatto clic sul tuo sito Web su Eff e sembra che il link a Introduzione a effetti e gestori algebrici sia obsoleto, vale a dire che il file eff-lang.org/handlers-tutorial.pdfè mancante.
k.stm,

1
Ho chiesto a Matija di correggere il collegamento, nel frattempo puoi guardare arxiv.org/abs/1203.1539 .
Andrej Bauer,

Sono già. Puoi, comunque, dare una breve panoramica della teoria di base che devo studiare per capire il tuo articolo? Conosco una teoria di categoria, un calcolo lambda non tipizzato e una teoria elementare di calcolo e teoria elementare della programmazione (so cosa sono la semantica denotazionale), ma non molto di più finora. Ad esempio, posso già dire dalla sezione 3 del tuo documento che ho bisogno di esaminare le regole di battitura (quindi forse nel calcolo lambda digitato). Scusa se sono invadente qui.
k.stm,

3
Dovresti sapere qualcosa sull'algebra universale e / o sulla teoria delle teorie algebriche di Lavwere. Se non si ha familiarità con le regole di battitura, è possibile studiare un libro di testo generale sui linguaggi di programmazione, come il TAPL di Benjamin Pierce o le basi pratiche dei linguaggi di programmazione di Bob Harper .
Andrej Bauer,

1

Questo documento fornisce alcuni importanti lavori recenti usando le monadi.


1
Ciao, grazie per la tua risposta. Gradirei un piccolo contesto, cioè se puoi risparmiare tempo per fornire alcuni dettagli. (In realtà il documento ha una bella introduzione sul suo contenuto, ma mi piacerebbe ancora vedere un contesto per i suoi dintorni, come se ci fosse un lavoro correlato e simili.)
k.stm
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.