[Haskell-cafe] two problems with Data.Binary and Data.ByteString
Tim Newsham
newsham at lava.net
Tue Aug 12 20:28:49 EDT 2008
> so that fromAscList's the result of parsing the map as a list, via,
>
> instance Binary a => Binary [a] where
> put l = put (length l) >> mapM_ put l
> get = do n <- get :: Get Int
> replicateM n get
>
> so that's a length-prefixed list, strictly. Which is possibly where the
> stack's being consumed. Does just bumping the stack size a bit help?
ugh.. length prefix..
I could bump the stack size to fix my immediate situation, but my goal
is to have a server with a huge in-memory data set, and my test data
so far is quite small.
> Alternatively, you could consider serialising the Map in some other
> format (i.e. newtype the list, and serialise that say, in a lazy/chunked
> encoding).
hackery :(
but that sounds like the obvious fix.
>> Log: savedState.bin: openFile: resource busy (file is locked)
>>
>> this does not occur if the program wasnt loaded. My best guess here
>> is that B.readFile isnt completing and closing the file for some
>> reason. Is there a good way to force this?
>
> Lazy IO. So force the result to be evaluated, and then close the handle,
> or use strict bytestring reading.
There is no visible handle. It's all hidden in readFile.
I will try forcing the data.
> -- Don
Tim Newsham
http://www.thenewsh.com/~newsham/
More information about the Haskell-Cafe
mailing list