According to my reading of the regular expression in the basis book, the string "~0" should be accepted (completely) by Real.scan, but it is rejected. On the other hand, "-0" is completely accepted. I did a quick scan of the code and I don't get how this happens, but either way, isn't it wrong?