ByteString.Lazy.Char8 (空间不足)



这段代码一执行就会<stdin>: hGetBufSome: resource exhausted (Not enough space)错误。

import qualified Data.ByteString.Lazy.Char8 as B8
main = do
    (l:_) <- B8.lines `fmap` B8.getContents
    B8.putStrLn l

我只是想得到第一行。所以由于延迟加载,它不会试图让其他人正确吗?我不知道如何避免此错误。

64 位 Windows 7 上的惰性字节串似乎存在问题,例如

  • 这个潘多克补丁(2013年7月)
  • 哈斯克尔咖啡馆的帖子(2013年7月)
  • 一个粘贴帖子(2013 年 3 月)

由于报告都是一年多前的,如果您尚未使用该版本,我会尝试使用GHC 7.8.3(例如,来自Haskell平台2014.2.0.0)。

这是针对GHC关于此问题的错误报告:https://ghc.haskell.org/trac/ghc/ticket/11009#ticket

我想现在的解决方案是不在惰性字节字符串上使用 getContent(切换到严格或只是增量读取)。

最新更新