我有一个300MB的文件(link),里面有utf-8字符。我想写一个等同于:
的haskell程序cat bigfile.txt | grep "^en " | wc -l
在我的系统上运行2.6秒。
现在,我正在将该文件作为普通字符串(readFile)读取,并且具有以下内容:
main = do
contents <- readFile "bigfile.txt"
putStrLn $ show $ length $ lines contents
几秒钟后,我收到此错误:
Dictionary.hs: bigfile.txt: hGetContents: invalid argument (Illegal byte sequence)
我认为我需要使用更符合utf-8的东西吗?如何快速兼容utf-8?我读到Data.ByteString.Lazy的速度,但Real World Haskell说它不支持utf-8。
答案 0 :(得分:7)
包utf8-string支持读写UTF8字符串。它重用了ByteString
基础设施,因此界面可能非常相似。
this Masters thesis中讨论了另一个可能与上述相关的Unicode字符串项目,也受ByteStrings的启发。