[Haskell-cafe] Binary and Serialize classes

Alexey Khudyakov alexey.skladnoy at gmail.com
Thu Apr 28 17:17:22 CEST 2011


> Speaking of that Double instance... both data-binary and cereal use
> decodeFloat and encodeFloat which mean they suffer from the same
> problems as realToFrac, namely that -0 becomes 0 and NaN becomes
> -Infinity (I'm not sure why the latter happens since the decoded
> values differ... must be a problem with encodeFloat).  It's tempting
> to just get the ieee754 bitmap out and serialize that.  I know I've
> seen this question around before, but is it possible to somehow cast a
> D# directly to bytes?  I know I can write a C function and FFI that
> in, but it would be tidier to do it all in haskell.  I guess I can
> probably use castPtr and memCpy, but I don't see the required
> addressOf.  I.e. how would I write 'memcpy(buf, &d, sizeof(double));'?
>
Also serialized data takes ~3 times more space than IEEE754
representation. It's a concern when a lot of data is serialized.
Serialization in IEEE754 format is implemented already for binary.
You can check package data-binary-ieee754[1] for

[1] http://hackage.haskell.org/package/data-binary-ieee754



More information about the Haskell-Cafe mailing list