22:17:46aethYou can extend this past integers by handling before and after a / or before and after a . as special cases for rationals/floats. Full float syntax (e.g. 42d-32, 23e22, 4321f3, etc.) makes it a lot harder, though.
22:19:15aethRationals would just divide one over the other, floats would divide the part after the . by one less than the length, e.g. (/ 123 (float 10f2)) gets you 0.123 as a single float.
22:19:32aeths/one less than the length/10 to the power of one less than the length/
22:20:44aethThat's a special case you can handle. Or you can choose not to, since you're using your own reader, not READ
22:21:57aethIt's an interesting case of incompatibility between CL's reader and Scheme's, though, since in Scheme (although idk if it's standard, I'll have to check) that becomes "12.0". I really need to collect a list of incompatibilities somewhere... I've already forgotten quite a few.
22:22:35aethThis can become an issue if e.g. you wanted to specify a portable .sxp file format
22:23:27mfiano"N." is a useful way to get out of non-10 read base
22:25:14aethI always use the "f0" suffix for floats because it's fairly common to have *read-default-float-format* as DOUBLE-FLOAT and I even do that sometimes when I'm using CL as a calculator, and it absolutely breaks everything.
22:25:28aethBut I don't think I'd write defensively for a different *read-base* because that's a whole other level of things breaking.