Каждый раз, когда кто-то promises "объясняет монады", мой интерес вызван, только для того, чтобы его заменили разочарованием, когда предполагаемое "объяснение" - это длинный список примеров, оканчивающихся каким-то небрежным замечанием о том, что "математическая теория" за "эзотерическими идеями" "слишком сложно объяснить на этом этапе".
Теперь я прошу об обратном. У меня есть четкое понимание теории категорий, и я не боюсь преследований диаграмм, леммы Йонеды или производных функторов (и действительно, в монадах и дополнениях в категориальном смысле).
Может ли кто-нибудь дать мне четкое и четкое определение того, что монада в функциональном программировании? Чем меньше примеров, тем лучше: иногда одна четкая концепция говорит о более чем ста робких примерах. Хаскелл прекрасно подойдет для демонстрации, хотя я не придирчив.