Eventi naturali di monadi che fanno uso del quadro teorico di categoria


18

Oggi, un discorso di Henning Kerstan ("Trace Semantics for Probabilistic Transition Systems") mi ha confrontato per la prima volta con la teoria delle categorie. Ha costruito un quadro teorico per descrivere i sistemi di transizione probablistica e il loro comportamento in modo generale, cioè con insiemi di stati infiniti e infinite nozioni di tracce. A tal fine, passa attraverso diversi strati di astrazione per finire infine con la nozione di monadi che combina con la teoria delle misure per costruire il modello di cui ha bisogno.

Alla fine, gli ci sono voluti 45 minuti per (approssimativamente) costruire un framework per descrivere un concetto che inizialmente ha spiegato in 5 minuti. Apprezzo la bellezza di un approccio (che non generalizzare ben oltre differenti nozioni di tracce), ma mi sembra un equilibrio strano comunque.

Faccio fatica a vedere cosa sia realmente una monade e come un concetto così generale possa essere utile nelle applicazioni (sia in teoria che in pratica). Ne vale davvero la pena, dal punto di vista del risultato?

Pertanto questa domanda:

Ci sono problemi naturali (nel senso di CS) su cui può essere applicata la nozione astratta di monadi e aiuta (o è anche strumentale) a ottenere i risultati desiderati (per niente o in un modo più bello che senza)?


2
Codificare gli stati in un linguaggio di programmazione puramente funzionale? È un problema CS abbastanza naturale?
Stéphane Gimenez,

2
Il problema più generale della gestione degli effetti nei linguaggi funzionali è l'esempio che ho visto di più: per la teoria, le monadi per gli effetti sono sexy e per la pratica, la monade IO di Haskell è molto utile.
jmad

E quali sarebbero i vantaggi rispetto alla semantica classica, relativamente leggera? Le monadi FP sono uguali a quelle della teoria delle categorie? Domande su domande.
Raffaello

Vedi questa domanda su cstheory.SE per una domanda più generale dopo l'uso della teoria delle categorie.
Raffaello

Risposte:


6

Chiedere se un evento di monade sia naturale è simile a chiedere se un gruppo (nel senso della teoria dei gruppi) è naturale. Una volta formalizzato qualcosa, in questo caso come endofunctor, o soddisfa gli assiomi dell'essere una monade o no. Se soddisfa gli assiomi, si ottengono molti macchinari tecnici gratuitamente.

L'articolo di Moggi Nozioni di calcolo e monadi praticamente sigilla l'affare: le monadi sono incredibilmente naturali e utili per descrivere gli effetti computazionali in modo unificato. Wadlere altri tradussero queste nozioni per trattare gli effetti computazionali nei linguaggi di programmazione funzionale, usando la connessione che un funzione è un costruttore di tipi di dati. Questo aggiunge la ciliegina sulla torta. Le monadi FP consentono un trattamento di effetti computazionali come IO, che sarebbe estremamente innaturale senza di loro. Le monadi hanno ispirato nozioni utili correlate come frecce e modi di dire che sono anche molto utili per strutturare i programmi funzionali. Vedi il link Wadler per i riferimenti. Le monadi FP sono la stessa cosa delle monadi della teoria delle categorie, nel senso che per far funzionare una monade FP le stesse equazioni devono essere mantenute: il compilatore si basa su queste. Generalmente, la presentazione della monade differisce (operazioni ed equazioni diverse ma equivalenti), ma questa è una differenza superficiale.

Gran parte del lavoro di Bart Jacobs , per fare solo un esempio, usa monadi. Molto lavoro deriva dalla coalgebra, che è una teoria generale dei sistemi. Uno dei (molti) contributi di Jacobs all'area è lo sviluppo di una nozione generica di semantica in tracce per sistemi (descritti come coalgebre) basati su monadi. Si potrebbe sostenere che la nozione di semantica in traccia è naturale: qual è la semantica di un sistema? L'elenco delle azioni che è possibile osservare!

Un modo per capire le monadi è programmare prima in Haskell usando le monadi. Quindi trova uno dei tanti buoni tutorial disponibili (tramite google). Inizia dal punto di vista della programmazione, quindi passa al lato teorico, iniziando con alcune teorie di categoria di base.

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.