Монада - это математическая структура, которая в значительной степени используется в (чистом) функциональном программировании, в основном в Haskell. Однако имеется много других математических структур, таких как, например, аппликативные функторы, сильные монады или моноиды. Некоторые из них более конкретные, некоторые более общие. Тем не менее, монады гораздо более популярны. Почему это?
Одно из объяснений, которое я придумал, заключается в том, что они являются сладким пятном между обличительностью и специфичностью. Это означает, что монады фиксируют достаточные предположения о данных для применения алгоритмов, которые мы обычно используем, и данные, которые мы обычно выполняем монадические законы.
Другим объяснением может быть то, что Haskell предоставляет синтаксис для monads (do-notation), но не для других структур, что означает, что программисты Haskell (и, следовательно, исследователи функционального программирования) интуитивно обращаются к монадам, где более общий или специфический (эффективный ) также будет работать.