[Haskell-cafe] binary IO
Joel Reymont
joelr1 at gmail.com
Tue Dec 27 03:37:27 EST 2005
This is what I spent the past 3 months on. Pickling code that
interoperates with a C++ server that sends things to me little-
endian. And sends other wierd data like unicode strings that are zero-
terminated.
SerTH does not handle things like that since it cannot divine the
wire format for you. I used the pickler combinators approach which
worked great in theory since I could specify the wire format and have
a single spec for pickling and unpickling. In practice this turned
out to be too slow and I still don't know why.
I'm still waiting to see how this should really be done.
Joel
On Dec 27, 2005, at 7:35 AM, Jeremy Shaw wrote:
> There is one important difference in my mind. Most of the pickling
> code
> is concerned with turning haskell data into a binary stream that can
> later be turned back into haskell data. There is no interoperability
> required -- the thing that writes it is the thing that will read it.
>
> For parsing arbitrary binary data formats a few other important
> issues arise that you can sometimes forget about with pickling such
> as:
>
> ~ byte-alignment
> ~ big-endian vs little endian
> ~ size of data types (for example is Char one byte or four)
> ~ bitwise parsing
>
> Both pickling and binary format parsing can be built on the same
> underlying low-level binary access methods.
--
http://wagerlabs.com/
More information about the Haskell-Cafe
mailing list