Last week I found that - although I requested information to be printed readably - NaNs are printed unreadable, without generating an error. I'd really like to fix this, especially because it broke the expectation of readable input after succesfull save.
At first, I thought I'd print it as #.SYS::SINGLE-FLOAT-NAN However, that has the disadvantage that it's definitely non-portable. However, some implementations have a mode where (/ 0.0s0 0.0s0) results in a NaN instead of a DIVISION-BY-ZERO.
The new proposal is to print NaN as #.(/ 0.0s0 0.0s0) and #.(/ 0.0d0 0.0d0) respectively, if readable printing is requested; non-readable printing can stay as it is (ie using #<...>). That works (is readable input) for ABCL. For SBCL, this is readable input if it's in IEEE mode. With respect to any of the other Lisps, I have no idea.
Comments?
With kind regards,
Erik.