Haskell 使用Data.Binary.decodeFile时,遇到错误“;demandInput:字节不足“;
我正在尝试使用Data.Binary中的encodeFile和decodeFile函数来保存一个非常大的数据结构,这样我就不必每次运行这个程序时都重新计算它。相关的编码和解码功能如下:Haskell 使用Data.Binary.decodeFile时,遇到错误“;demandInput:字节不足“;,haskell,io,binary-data,bytestring,Haskell,Io,Binary Data,Bytestring,我正在尝试使用Data.Binary中的encodeFile和decodeFile函数来保存一个非常大的数据结构,这样我就不必每次运行这个程序时都重新计算它。相关的编码和解码功能如下: writePlan :: IO () writePlan = do (d, _, bs) <- return subjectDomain outHandle <- openFile "outputfile" WriteMode ((ebsP,
writePlan :: IO ()
writePlan = do (d, _, bs) <- return subjectDomain
outHandle <- openFile "outputfile" WriteMode
((ebsP, aP), cacheData) <- preplanDomain d bs
putStrLn "Calculated."
let toWrite = ((map pseudofyOverEBS ebsP, aP),
pseudofyOverMap cacheData) :: WrittenData
in do encodeFile preplanFilename $ encode toWrite
putStrLn "Done."
readPlan :: IO (([EvaluatedBeliefState], [Action]), MVar HeuCache)
readPlan = do (d, _, _) <- return subjectDomain
inHandle <- openFile "outputfile" ReadMode
((ebsP, aP), cacheData) <- decodeFile preplanFilename :: IO WrittenData
fancyCache <- newMVar (M.empty, depseudofyOverMap cacheData)
return $! ((map depseudofyOverEBS ebsP, aP), fancyCache)
我无法理解这一点,谷歌也没有发现关于这条消息的实质性文档或讨论。如有任何见解,将不胜感激 我参加聚会已经很晚了,但在寻找类似问题的帮助时发现了这一点。我正在使用
Data.Binary.Get
的增量接口。如中所示,函数是在Data.Binary.Get.Internal
中定义的。现在我猜,但是您的decodeFile函数可能会进行某种解析,并且会抛出错误,因为文件没有完全解析(即,解析器认为文件中一定有其他内容,但它已经到达EOF)
希望这能帮助任何人解决这个/类似的问题 在黑暗中刺伤,但它到底有多大?大于4G字节?也许是32位的东西?
Realtime: demandInput: not enough bytes