Dmitry Dugin
Я правильно понимаю один из аспектов функционально подхода в отношении чистых и нечистых функций? мы изолируем нечистые функции(ввод-вывод допустим) , а они уже вызывают чистую функцию, которая в свою очередь может последовательно вызвать цепочку чистых функций. таким образом изолируется "грязный" код как я понял.
Это зависит от того, насколько у тебя сильная форма монад головного мозга и на каком языке программирования ты сидишь. Если это тьфу-тьфу Хаскель, то там IO a служит великой цели разделения мира напополам. Но поскольку в большинстве случаев на практике тебе надо не только IO, а ещё и состояние, и работа с потенциально отсутствующими данными, и обработка ошибок или тайм-аутов, одним IO ты обойтись не можешь и начинаешь городить нечто гораздо более уродливое вслед за wikihaskell. Если у тебя языки с примесью функциональных подходов, которые все же ближе к грешному миру промышленной разработки, то там, например, не стыдно в качестве аргумента чистой функции принимать ILogger условный и писать лог прям из чистой функции; таким образом она становится не вполне чистой, но это на практике никого не волнует, поскольку все ключевые преимущества чистых функций остаются. В таких языках любители BDSM обычно вопреки здравому смыслу натягивают на свой код самописные монады как сову на глобус ради ощущения собственного величия и «я не такой как все», а все остальные просто ищут здоровый баланс между сайдэффектами и математическим совершенством.