Meaning of # in Scheme number literals
racket, scheme, syntax
Solution
The hash syntax was introduced in 1989. There were a discussion on inexact numbers on the Scheme authors mailing list, which contains several nice ideas. Some caught on and some didn't.
http://groups.csail.mit.edu/mac/ftpdir/scheme-mail/HTML/rrrs-1989/msg00178.html
One idea that stuck was introducing the `#` to stand for an unknown digit. If you have measurement with two significant digits you can indicate that with `23##` that the digits `2` and `3` are known, but that the last digits are unknown. If you write `2300`, then you can't see that the two zero aren't to ne trusted. When I saw the syntax I expected `23##` to evaluate to 2350, but (I believe) the interpretation is implementation dependent. Many implementation interpret `23##` as 2300.
The syntax was formally introduced here:
http://groups.csail.mit.edu/mac/ftpdir/scheme-mail/HTML/rrrs-1989/msg00324.html
EDIT
From http://groups.csail.mit.edu/mac/ftpdir/scheme-reports/r3rs-html/r3rs_8.html#SEC52
An attempt to produce more digits than are available in the internal machine representation of a number will be marked with a "#" filling the extra digits. This is not a statement that the implementation knows or keeps track of the significance of a number, just that the machine will flag attempts to produce 20 digits of a number that has only 15 digits of machine representation:
3.14158265358979##### ; (flo 20 (exactness s))
EDIT2
Gerald Jay Sussman writes why the introduced the syntax here:
http://groups.csail.mit.edu/mac/ftpdir/scheme-mail/HTML/rrrs-1994/msg00096.html
Problem
DrRacket running R5RS says that `1###` is a perfectly valid Scheme number and prints a value of `1000.0`. This leads me to believe that the pound signs (#) specify inexactness in a number, but I'm not certain. The spec also says that it is valid syntax for a number literal, but it does not say what those signs mean. Any ideas as to what the # signs in Scheme number literals signifiy?