Что такое Frege эквивалентно Haskell readFile?

При подготовке эквивалентов Фреге для реальных примеров кода на Haskell (глава 2) я не смог найти эквивалент для

:type readFile

Какой будет ближайший матч?


person Dierk    schedule 30.09.2013    source источник
comment
Обновление от 1 марта 2014 г.: в последнем выпуске теперь поддерживается readFile. Однако, поскольку он считывает все данные в одну огромную строку, использование рекомендуется только для небольших файлов или когда вам действительно нужен весь текст сразу (в отличие от построчного, скажем).   -  person Ingo    schedule 01.03.2014


Ответы (2)


Кажется, вам придется использовать функцию openReader :: String -> IO BufferedReader вместе с функцией getLines :: BufferedReader -> IO [String]. Затем вы можете просто объединить список строк в одну строку.

person Ankur    schedule 30.09.2013

Хорошо, я сделал это

readFile :: String -> IO [String]
readFile fileName = do
    file <- openReader fileName
    file.getLines

(Это не будет хорошо отображаться как комментарий, поэтому я сделал это ответом)

person Dierk    schedule 30.09.2013
comment
Возможно, это должна быть библиотечная функция, однако было бы очень запутанно, если бы имя было таким же, как в Haskell, но тип был бы несовместим. Есть идея для хорошего имени? - person Ingo; 30.09.2013
comment
Хм, Groovy, например, имеет File.getText() при чтении полного файла в память в виде текста. - person Dierk; 30.09.2013
comment
В Perl это будет slurp, что красиво и звучит забавно, но, конечно, интуитивно понятно только для старых perl-хакеров.... - person Ingo; 30.09.2013