Если я исключение обрабатываю на месте?
Если ты все исключения обрабатываешь на месте и результат вычисления функции никак не зависит от того, что ты там с этим файлом делаешь, и кроме того, эти манипуляции никак не влияют на выч. окружение других частей программы, то эту функцию можно рассматривать как чистую. К слову, некоторые хаскельные функции внутри делают in-place мутации, но имеют чистый интерфейс.