Я предпочитаю как можно ближе придерживаться функциональной парадигмы, сжимая как можно ближе к чисто функциональному, когда мой мозг справляется с задачей. Я использую F #, когда это возможно. Обычно я застрял либо с VB.NET, либо с С# (или VBA, когда мне действительно не повезло). Поэтому мои языки позволяют мне отклоняться от функционального подхода.
Исторически я игнорировал ведение журнала и общение с пользователем до тех пор, пока у меня не получится результат - просто подождите, пока пользователь будет ждать. Теперь я пытаюсь внедрить протоколирование и/или обновления баров состояния. Это легко, потому что мои языки позволяют мне писать на стандартный вывод, когда захочу. Но с чисто функциональной точки зрения, как же происходит утечка информации о том, что происходит внутри одной функции во внешнем мире? Является ли регистрация или общение с пользователем во время вычислений просто противоречащим чисто функциональному подходу?
Я уверен, что в Haskell можно использовать Монаду. Как насчет использования других языков?
Спасибо.