Программа не может быть чистой на 100%, ибо нам все равно приходится взаимодействовать с внешним миром, а то есть производить сайд-эффекты. Например, логировать в консоль, инициализировать http-запросы, взаимодействовать со сторонним апи, манипулировать DOM-деревом, работать с базой. Без этого не обойтись. Однако можно разграничить код, в котором присутствуют сайд-эффекты и код, который является чистым согласно всем правилам ФП. Как раз-таки для этой цели в программирование и были включены МОНАДЫ, благодаря им мы можем составлять функциональную композицию не только лишь из чистых функций, но и из тех, что порождают сайд-эффекты. Без монад это невозможно