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