Czy wszystkie monady są monoidami?
Czy wszystkie monady są monoidami?

Wideo: Czy wszystkie monady są monoidami?

Wideo: Czy wszystkie monady są monoidami?
Wideo: A monad is a monoid in the category of endofunctors. Whats the problem? #SoMe2 2024, Listopad
Anonim

Dobrze powiedziana, być może najkrótsza odpowiedź w historii brzmi: A monada jest po prostu monoid w kategorii endofunctorów. Zadowolony monoid aksjomaty (i. i ii.), a monada można postrzegać jako monoid który jest endofunctorem wraz z dwoma naturalnymi przekształceniami.

Czym jest tutaj Endofunctor Monad?

W kategorii teorii, gałąź matematyki, a monada (również potrójna, triada, konstrukcja standardowa i konstrukcja podstawowa) jest an końcowy funktor (funktor odwzorowujący kategorię) wraz z dwoma naturalnymi przekształceniami niezbędnymi do spełnienia określonych warunków koherencji.

Następnie pojawia się pytanie, czym jest Bifunctor? A dwufunkcyjny (znany również jako funktor binarny) to funktor, którego domeną jest kategoria produktu. Można go postrzegać jako funktor w dwóch argumentach. Naturalnym przykładem jest funktor Hom; jest kontrawariantna w jednym argumencie, kowariantna w drugim. Multifunktor to uogólnienie pojęcia funktora na n zmiennych.

Czym zatem jest monada w programowaniu?

Z wikipedii: W funkcjonalnym programowanie , a monada to rodzaj abstrakcyjnego typu danych używanego do reprezentowania obliczeń (zamiast danych w modelu domeny). Monady pozwól programista do łączenia akcji razem w celu zbudowania potoku, w którym każda akcja jest ozdobiona dodatkowymi regułami przetwarzania dostarczonymi przez monada.

Czym jest monada Haskell?

w Haskell a monada jest reprezentowany jako konstruktor typu (nazwij go m), funkcja, która buduje wartości tego typu (a -> ma) oraz funkcja, która łączy wartości tego typu z obliczeniami, które dają wartości tego typu w celu utworzenia nowego obliczenia dla wartości tego typu (ma -> (a -> mb) -> mb).

Zalecana: