ByteString.Lazy.Char8(空间不够)

时间:2014-11-18 06:01:23

标签: haskell lazy-evaluation bytestring

此代码一执行就会出现<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

我只想尝试第一线。因为延迟加载它不会试图让其他人正确吗?我无法弄清楚如何避免这个错误。

2 个答案:

答案 0 :(得分:2)

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

由于这些报告都来自一年多以前,如果您还没有使用该版本,我会尝试使用GHC 7.8.3(例如,来自Haskell平台2014.2.0.0)。

答案 1 :(得分:0)

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

我想现在的解决方案是不要在延迟字节串上使用getContents(切换到strict或只是逐步读取)。