This problem has been raised before but still needs resolution.  In R6RS, no identifier can begin with a character that can also be the beginning of a number.  In other words, if a character sequence begins with the digits 0-9, the decimal point, or the signs + and -, it is invalid as an identifier.  The only exceptions are the identifiers +, -, ..., and identifiers beginning with ->.

This collides with the pattern operators ..1 and ..=, which both begin with an apparent decimal point.  It's true that not all R6RS systems enforce the above rules, but some do, and as long as people continue to write R6RS Schemes (which I expect to continue indefinitely), it will be a permanent booby trap.  The only way to escape ..1 in R6RS is to represent it as \x2e;.1, which is ugly, error-prone, and not at all portable.

Since ... (which is allowed by R6RS) has the alternative form ___, the simplest thing is for ..1 and ..= be changed  to __1 and __=.  This breaks backward compatibility but provides portability among other SRFI 204 implementations, but not to other WCS implementations.  Providing both ..1 and __1 would require the user to choose between two different groups of implementations to be portable to.

The one thing I'm positive about is that we can't ignore this.



John Cowan          http://vrici.lojban.org/~cowan        xxxxxx@ccil.org
Unless it was by accident that I had offended someone, I never apologized.
        --Quentin Crisp