Hi,

It looks like the changes to the reader to support SRFI-88-style keywords lead to some ambiguities when it comes to whether a token is a symbol or a keyword.  Specifically, it's no longer possible to create a symbol via quoting if that symbol ends in a colon:

guile> (use-modules (srfi srfi-88))
guile> (keyword? foo:)
#t
guile> (keyword? 'foo:)
#t
guile> (symbol->string 'foo:)

Backtrace:
In standard input:
   6: 0* [symbol->string {#:foo}]

standard input:6:1: In procedure symbol->string in expression (symbol->string (begin #)):
standard input:6:1: Wrong type argument in position 1 (expecting symbol): #:foo
ABORT: (wrong-type-arg)


This is particularly bad because it breaks a lot of code that calls `use-modules' with the :prefix or :rename syntax -- from looking at some of the core libraries, it seems like it's pretty common to use rename-prefixes that end in a colon.  So, for example, the ice-9 debugger modules don't work after loading `(srfi srfi-88)'.

I'm not sure yet what the fix would be -- maybe the reader should avoid converting a token into a postfix-style keyword if it's obvious from the read state that a symbol is desired (i.e., the quote character is prefixed), but that probably doesn't cover all the possibilities.


Regards,
Julian