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