Haskell: Jak używać attoparsec do odczytu zagnieżdżonej listy z ByteString
Mam plik tekstowy (~ 300 MB duży) z zagnieżdżoną listą, podobny do tego:
[[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]]
Oto mój program do odczytu pliku w haskellInteger
lista:
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)
Działa to dla małych plików tekstowych, ale chcę użyćByteString
szybko odczytać plik. Dowiedziałem się, że nie maread
funkcja dla ByteString, zamiast tego powinieneś napisać własny parser w attoparsec, ponieważ obsługuje parsowanie ByteStrings.
Jak mogę korzystaćattoparsec
analizować zagnieżdżoną listę?