Основной мой поинт в том, что программа с MonadIO не становится автоматически хуже, менее тестируемой, хуже сопроводжаемой и развиваемой, по сравнению с программой, где всё разбито на более гранулярные части и связано через Free/Effects структуру, просто потому, что там есть MonadIO. Обратное тоже не верно: программа с MonadIO не становится лучше.