这段代码一执行就会<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(切换到严格或只是增量读取)。