Memory reinterpretation casts for Float/Double and Word32/Word64 in Haskell