
On Thu, May 31, 2007 at 08:47:28PM +0100, Andrew Coppin wrote:
If you're bored... can you come up with a solution to this?
http://warp.povusers.org/ProgrammingChallenge.html
(Obviously a pretty silly challenge, but hey.)
My first instinct was to use Data.Bits - but I see no instance for Double.
You can imitate the C++ code using the FFI libraries: import Foreign.Storable import Foreign import Data.Word import Data.Bits getDoubleBits :: Double -> IO String getDoubleBits d = alloca $ \ptr -> do poke ptr d bs <- peekArray (sizeOf d) (castPtr ptr :: Ptr Word8) return . concatMap (concatMap (show . fromEnum) . flip map [7,6..0] . testBit) $ bs (I'm not sure this code prints bits in the right order). You can generalize this to getStorableBits :: Storable a => a -> IO String Best regards Tomek