а теперь аппелирование к эмоциям
нет просто я говорю о том что вы сначала заявляете что есть функция как черный ящик, что есть строго один момент когда в нее входят аргументы и выходит значение. на этом моменте можно поверить в ее чистоту
но потом оказывается что мы можем взять функцию как обьект, каррировать его(что подобно изменению стейта, потому что новая функция при этом не создается) не говоря уже о том что мы просто уже биндим в нее стейт из другого места, т.е. тут кто ее потом докаррирует уже не может говорить что в ней действительно чтото передали и чтото получили потому что само получение этой функции в той точке где она вызывается - это продукт десятков "докаррирований".
тоесть тебе понянет ход мыслей? мы говорим чистота есть один вход и один выход, и поэтому это упрощает отладку, упрощает тесты - это обьективная оценка.
потом мы делаем функцию такой что она принимает десятки аргументов раскиданных по всей программе и сама функция отдает уже не результат а еще одну функцию. где тут чистота где польза от чистоты где тестируемость отлаживаемость?
ну а монады это апофеоз - мы делаем функцию которая отдает функцию которая ожидает что ее вызовут особым образом и будут вызывать по кругу на каждый чих буквально. что на этом этапе у нас остается от тестируемости или отлаживаемости?