
I've cast about a bit and haven't been able to find the appropriate functionality, so I'm asking here. I'd like to convert Int32 to and from Word32 in the good old-fashioned bitwise fashion (perserving modular arithmetic). I have the following code to show what I mean: intToNat i | i >= 0 = fromIntegral i | otherwise = fromIntegral (i - minBound) + negBound where negBound = fromInteger . negate . toInteger $ (minBound :: Int) One might think that "intToWord32" and "word32ToInt" in lang/Word would do what I want---but no! These are depracated, and I must use fromIntegral, which will only perform the conversion correctly for the portions of the numeric range which overlap. How do I do the straightforward conversion module 2^32? I'm sure it's buried in there somewhere... I can't even turn up an appropriate type signature, though. -Jan-Willem Maessen