
bos:
Adam Langley wrote:
That's excellent! This is just the sort of thing one wants if getting dribs and drabs of information instead of a steady stream. For example, I need to reconstruct TCP streams from individual packets captured off the wire, and this is a much easier mechanism to use than playing tricks with the direct-mode Get monad.
Questions: 1) Should Finished include the remainder of the ByteString (e.g. that which wasn't used by that parser)
Yes, definitely. I had to add a runGetState to the existing Get monad so that I could recover the unparsed residual, so I'm sure it will be necessary here.
2) I've no idea what I've done to the parse speed
Getting the API right is the appropriate thing to be doing first. Afterwards, the rewrite rule ninjas can stage a night attack on performance problems.
Yeah, I'm happy to attack that problem. The key is finding a useful API that you actually can work with for real problems. This looks like a good step -- and interesting to see how you're needs differed from the original intent.
But if this is useful to you, make any requests. I'll (hopefully) do them, clean it up and push a new release of binary-strict.
I'm lobbying for Don and company to include this stuff in the regular binary distribution. A proliferation of almost-identical packages doesn't serve the community all that well.
I'm happy to -- if people need a slightly different API, we should do what we can to support that. The goal is to make binary hacking in Haskell painless, so anything that helps that goal, is good :) -- Don