Naturalne występowanie monad, które wykorzystują ramy teoretyczne kategorii


18

Dzisiaj przemówienie Henninga Kerstana („Trace Semantics for Probabilistic Transition Systems”) po raz pierwszy skonfrontowało mnie z teorią kategorii. Zbudował teoretyczne ramy do opisywania probabilistycznych układów przejściowych i ich zachowania w sposób ogólny, tj. Z nieskończenie nieskończonymi zbiorami stanów i różnymi pojęciami śladów. W tym celu przechodzi przez kilka warstw abstrakcji, aby ostatecznie skończyć na pojęciu monad, które łączy z teorią miar, aby zbudować model, którego potrzebuje.

Ostatecznie zajęło mu 45 minut (z grubsza) zbudowanie frameworka do opisania koncepcji, którą początkowo wyjaśnił w 5 minut. Doceniam piękno podejścia (to nie uogólniać ładnie na różne pojęcia śladów), ale wydaje mi się dziwnym równowagi mimo.

Z trudem widzę, czym tak naprawdę jest monada i jak ogólna koncepcja może być przydatna w zastosowaniach (zarówno w teorii, jak i praktyce). Czy to naprawdę warte wysiłku, jeśli chodzi o wyniki?

Dlatego to pytanie:

Czy istnieją problemy, które są naturalne (w sensie CS), na których można zastosować abstrakcyjne pojęcie monad i pomaga (lub wręcz instrumentalnie) w uzyskaniu pożądanych rezultatów (w ogóle lub w ładniejszy sposób niż bez)?


2
Kodowanie stanów w czysto funkcjonalnym języku programowania? Czy to wystarczająco naturalny problem z CS?
Stéphane Gimenez

2
Bardziej ogólny problem z obsługą efektów w językach funkcjonalnych to przykład, który widziałem najbardziej: w teorii monady dla efektów są seksowne, a dla praktyki bardzo przydatna jest monada IO Haskella.
jmad

A jakie byłyby zalety w porównaniu z klasyczną, stosunkowo lekką semantyką? Czy monady FP to nawet to samo, co w teorii kategorii? Pytania po pytaniach.
Raphael

Zobacz to pytanie na cstheory.SE, aby uzyskać bardziej ogólne pytanie po zastosowaniu teorii kategorii.
Raphael

Odpowiedzi:


6

Pytanie o to, czy wystąpienie monady jest naturalne, jest podobne do pytania, czy grupa (w sensie teorii grup) jest naturalna. Po sformalizowaniu czegoś, w tym przypadku jako endofunkcji, spełnia on albo aksjomaty bycia monadą, albo nie. Jeśli spełnia aksjomaty, to dostajemy za darmo wiele technicznych urządzeń.

Artykuł Moggiego Pojęcia obliczeń i monady praktycznie rozwiązują ten problem: monady są niezwykle naturalne i przydatne do opisywania efektów obliczeniowych w ujednolicony sposób. Wadlera inni tłumaczyli te pojęcia, aby radzić sobie z efektami obliczeniowymi w funkcjonalnych językach programowania, wykorzystując połączenie, że funktor jest konstruktorem typu danych. To dodaje lukru na torcie. Monady FP umożliwiają leczenie efektów obliczeniowych, takich jak IO, które bez nich byłyby niezwykle nienaturalne. Monady zainspirowały powiązane użyteczne pojęcia, takie jak strzałki i idiomy, które są również bardzo przydatne do konstruowania programów funkcjonalnych. Zobacz odnośnik Wadlera. Monady FP to to samo, co monady teorii kategorii w tym sensie, że aby monada FP działała, muszą zachowywać te same równania - kompilator na nich polega. Zasadniczo prezentacja monady jest różna (różne, ale równoważne operacje i równania), ale jest to różnica powierzchowna.

Ogromna część pracy Barta Jacobsa , aby wziąć tylko jeden przykład, wykorzystuje monady. Dużo pracy wywodzi się z węgielnicy, która jest ogólną teorią systemów. Jednym z (wielu) wkładów Jacobsa w tę dziedzinę jest opracowanie ogólnego pojęcia semantyki śladowej dla systemów (określanych jako węgiel) w oparciu o monady. Można argumentować, że pojęcie semantyki śladu jest naturalne: jaka jest semantyka systemu? Lista działań, które można zaobserwować!

Jednym ze sposobów zrozumienia monad jest programowanie w Haskell za pomocą monad. Następnie znajdź jeden z wielu dobrych dostępnych samouczków (za pośrednictwem Google). Zacznij od kąta programowania, a następnie przejdź do strony teoretycznej, zaczynając od podstawowej teorii kategorii.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.