моноид против монады в Scala

Недавно я попытался найти хороший источник о разнице между монадами и моноидами.

Может ли кто-нибудь дать ссылку на хороший ресурс по этому поводу или, возможно, выделить время, чтобы подробно рассказать о сходствах / различиях?


person Bober02    schedule 16.03.2012    source источник
comment
О монадах и моноидах так много контента, что я думаю, у каждого есть свой хороший источник. Моя триада: это SO вопрос, Монады не являются метафорами Даниэль Спивак и Монады - это домино Рунара Оли   -  person blouerat    schedule 17.03.2012
comment
В теории категорий Для любой категории C категория [C, C] ее эндофункторов имеет моноидальную структуру, индуцированную композицией. Моноидный объект в [C, C] - это монада в C. - из en.wikipedia .org / wiki / Monoid_% 28category_theory% 29. См. Определение в en.wikipedia.org/wiki/Monad_%28category_theory%29 монады в теории категорий.   -  person    schedule 23.06.2015


Ответы (2)


Монады - это моноиды в категории эндофункторов. Следовательно, монада - это всего лишь один пример моноида, который является более общим понятием. .

И хотя технически это может быть правдой, самый простой ответ заключается в том, что монады и моноиды на самом деле не похожи друг на друга, и вам не следует пытаться понять разницу между ними, а просто изучите их. . В Интернете об этом есть масса материалов, которые легко найти в Google.

person Daniel C. Sobral    schedule 17.03.2012
comment
Я удивляюсь (и пугаю) меня тем, как математически относительно связанные идеи могут оказаться радикально разными во всех практических терминах применительно к языкам программирования. - person Erik Kaplun; 25.02.2014
comment
Этот ответ в другом вопросе вики сообщества - один из лучших и кратких stackoverflow.com/a/7829607/541202 - person Traveler; 18.12.2014
comment
Точнее, для любой категории C категория [C, C] ее эндофункторов имеет моноидальную структуру, индуцированную композицией. Моноидный объект в [C, C] - это монада в C. - из en.wikipedia .org / wiki / Monoid_% 28category_theory% 29. См. Определение в en.wikipedia.org/wiki/Monad_%28category_theory%29 монады в теории категорий. - person ; 23.06.2015
comment
Монады - это моноиды в категории эндофункторов. Это действительно сбивает с толку. Разве не все функторы в программировании в конечном итоге являются эндофункторами (поскольку единственная категория - это типы и функции)? Если да, то означает ли это, что каждый моноид по программированию также является монадой? - person 0x6C38; 18.10.2016
comment
@ 0x6C38 Если вас это сбивает с толку, вы должны увидеть следующий ответ: stackoverflow.com/a/57537696/1614973 - person Dmitri Zaitsev; 25.08.2019
comment
@Traveler Этот ответ не объясняет, почему монады являются особыми моноидами, см. Stackoverflow.com/a/57537696/1614973 - person Dmitri Zaitsev; 25.08.2019

См. этот ответ о том, почему монады являются частными случаями моноидов в моноидальных категориях. Последнее, однако, является обобщением классического моноида, определяемого через двоичную операцию и единицу. Монада - это не классический моноид. См. Ответ для получения более подробной информации и пояснений.

person Dmitri Zaitsev    schedule 25.08.2019