На эту тему я процитирую слова товарща Фаулера: Меньше - это больше. Все решает эффективность. Когда ты что то видишь в первый раз оно тебе может показаться сложным и непонятным. Но когда ты перешел через порог входа и начал понимать, что происходит все начинает быть быстрее и веселее. Я не спорю с тем, что С++ всегда был той вещью, которой легко было отстрелить себе ногу или какую нибудь другую конечность. Но по сути в этом вся его идеология сводится к тому, что у тебя есть достаточно большой объем инструментов, который может очень гибко решать очень сложные задачи, а может рождать кошмарные конструкции, все зависит от того, как пользоваться :-D. Монады - это еще одна такая конструкция, которая позволяет сделать язык более выразительным и решить какое то количество типовых задач.
Дело-то в том, что все императивные вещи понятны обычно минут через 10, а если не очень - сходил на митап по санитайзерам. Что такое монады я до конца понять не могу уже не первый месяц) Т.е. мне все понятно в каждой конкретной монаде, но покажи новую и я как баран на новые ворота смотрю