Я правильно понимаю, что стоит захотеть добавить в любую функцию, например, логирование через hslogger, то она из some_func :: SomeType неизбежно становится some_func :: IO SomeType, и аналогично все функции, ее вызывающие? Или как-то можно выкрутиться?