У меня есть текстовый файл (~ 300 Мб большой) с вложенным списком, похожий на этот:Haskell: Как использовать attoparsec для того, чтобы прочитать вложенный список из байтовой строки
[[4, 9, 11, 28, 30, 45, 55, 58, 61, 62, 63, 69, 74, 76, 77, 82, 87, 92, 93, 94, 95], [4, 9, 11, 28, 30, 45, 55, 58, 61, 62, 63, 69, 74, 76, 77, 82, 87, 92, 93, 94],[4, 9, 11, 28, 30, 45, 55, 58, 61, 62, 63, 69, 74, 76, 77, 82, 85, 87, 92, 93, 94, 95]]
Вот мой программа для чтения файлов в Haskell Integer
списка:
import qualified Data.ByteString as ByteStr
main :: IO()
-- HOW to do the same thing but using ByteStr.readFile for file access?
main = do fContents <- readFile filePath
let numList = readNums fContents
putStrLn (show nums)
Это работает для небольших текстовых файлов, но я хочу использовать ByteString
быстро прочитать файл. Я узнал, что для ByteString нет функции read
, вместо этого вы должны написать свой собственный парсер в attoparsec, так как он поддерживает синтаксический анализ ByteStrings.
Как использовать attoparsec
для разбора вложенного списка?
Вы хотите прочитать весь список за один раз, или обработать его на куски? –
читать список за один раз. – mrsteve