@p0lunin И да, тут уже много раз говорили - чистота, это не про то выведется ли на экран или всякую подобную дрянную философию, а про то, что программа будет сохранять свое поведение при некоторых преобразованиях кода.
IO - поведение в таких случаях сохраняет, значит оно чистое, вот и вся история.