A new function could return something like
data DecodedFloat = Decoded Integer Int
| NaN
| Infinity
| NegativeInfinity
| NegativeZero
Users who need strict IEE754 compatibility passing a NaN through will require the NaN constructor to return a raw representation of the NaN.