После запуска следующий код
withFile "file.txt" ReadWriteMode
(\h -> hGetContents h >>= putStrLn >> hGetContents h >>= putStrLn)
Я получаю содержимое file.txt
только один раз, а затем получаю следующее исключение:
*** Exception: file.txt: hGetContents: illegal operation (handle is closed)
Почему Haskell закрыл файл так рано, что я не смог выполнить все нужные действия? В документации написано
Дескриптор будет автоматически закрыт , когда вычисление вернет .
что в данном случае не так.
Почему он так себя ведет и как объединить несколько операций ввода-вывода в один обработчик?