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