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/
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe