我需要解析一个文件,因此首先要读取它,以下是我的程序:
import qualified Data.ByteString.Char8 as B
import System.Environment
main = do
args <- getArgs
let path = args !! 0
content <- B.readFile path
let lines = B.lines content
foobar lines
foobar :: [B.ByteString] -> IO()
foobar _ = return ()
但是,在编译之后
> ghc --make -O2 tmp.hs
当使用一个7GB文件调用时,执行过程会出现以下错误。
> ./tmp big_big_file.dat
> tmp: {handle: big_big_file.dat}: hGet: illegal ByteString size (-1501792951): illegal operation
感谢您的回复!
ByteString
在所有平台上使用Int
,因此它们只支持最多 2GB。您需要使用惰性ByteString
才能使其正常工作。 - dflemstrInt
是 64 位的。 - ehird