_>>И добавил моноиды в презентацию — чтобы хипстеры и менеджеры были хэппи. Q>При чём тут хипстеры и тем более менеджеры;
Хипстеры тут при том что буквально каждый изучив эти самые монады и моноиды и решив что всё понял, бежит писать в блог свою версию объяснения, и оценочное суждение в духе "это офигенно". Учитывая что система типов C# мягко говоря не вывозит, такое информационное поле создаёт на создателей языка вполне ощутимое давление.
Менеджеры тут при том что они выделяют ресурсы на фичи. И легче всего им продать то что 1)хайповое 2)есть в другом языке которые "competitor".
Q>моноиды — обычная конструкция для инженеров.
Конструкция необычная. В моей практике (может просто так повезло с проектами) — людям сначала нравится элегантность и единообразность монад, моноидов и этого всего. Команда проникается крутостью подхода, всё как-бы очень красиво и работа кипит. Конструкции распространяются по коду. И через какое-то время процесс разработки встаёт колом. На любую задачу уровня "добавьте отдельный таймаут для операции N, и чтобы его можно было менять в конфиге" начинает уходить прорва времени неадекватная задаче и квалификации людей которые работают с монадным кодом. Анализ трэйсов и дампов становится мучением — там почти всегда просто сотни вложенных bind и apply, через которые могут продраться не только лишь все и мало кто хочет это делать. Люди просто забивают на любой способ отладки кроме гадания по логам. Когда дело доходить до оптимизации производительности или потребления памяти — часто проще всю монадную магию выкинуть и переписать с нуля на чистой императивщине.
При этом роли (шейпы) будут вполне полезны без всяких монад. Так что к ним претензий никаких.