On 2007-08-19, Matthew Sackman <[EMAIL PROTECTED]> wrote: > Recently, Adam Langley responded so: >> On 8/18/07, Matthew Sackman <[EMAIL PROTECTED]> wrote: >> > Also, one thing to watch out for is the fact the existing Get and Put >> > instances may not do anything like what you expect. For example, for >> > some reason I expected that the instances of Get and Put for Float and >> > Double would send across the wire Floats and Doubles in IEEE floating >> > point standard. How wrong I was... >> >> Ah, those aren't instances of Get and Put, but of Binary[1]. You use >> the Binary instances via the functions 'get' and 'put' (case is >> important). > > Gah, that'll teach me to post from memory without checking the code. > Indeed, that is what I meant, the instances of Binary. > >> Get and Put provide actions like "putWord32be", for which the >> resulting bits are pretty much universally accepted. Binary has >> default instances which uses Get and Put to serialise Haskell types >> like [Int], or (Float, Float). Here the resulting bits aren't >> documented, but you can read the code and I have some C code for >> dealing with them somewhere if anyone is interrested. The >> serialisation of Float is, indeed, nothing like IEEE in either >> endianness. > > Quite. Whilst we're on the subject (and I realise I might be hijacking > this thread a little), it does seem rather odd that it's very easy to > take a Word8/16/32/64 and interpret it as an integer. Similarly, it's > very easy to take an integer and convert it to a Word of some sort.
That's because there's basically only one way to interpret a given word as an integer, and store a given integer as a word. > But it's vastly harder to do that for floats / non-integers. Now I know > that the number classes in the Prelude are basically broken anyway and > all really need rewriting, but it does seem completely arbitrary that > Words somehow are only allowed to contain whole numbers! It's more that for floats, there are a zillion plausible ways to store them, and many have been used. -- Aaron Denney -><- _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe