newsham: > >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.
Not hackery, just a different encoding. The default Binary encodings don't work cover all use cases and all scales. To hit other sweet spots, use your own instances. > >> 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. So you can decode using openFile, hGet and hClose on strict bytetrings, or force the data. -- Don _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe