But are the different keyword _objects_ incompatible with each other?
No, not in any implementation I know of. There is also the question of whether keywords are a kind of symbol or are disjoint: in Chicken they were historically a kind of symbol but are now disjoint to prevent people from trying to bind them.
The read syntax is different, but if a SRFI simply specifies that the
implementation must have _some_ syntax for keywords, whether it be foo:
or :foo or #:foo, and uses one of them for illustrative purposes but
implementations are allowed to use the others, would that cause problems?
As Arthur says, that would prevent code compatibility: as he doesn't say, it would also be bad for data portability, because keywords are datums in Lisps (except Racket) that have them.
The trouble with #! flags for this purpose is that they are file-global, making it hard to mix and match snippets. They also don't work well for data (what does `read` assume?)
In short, it's all a big mess.
John Cowan
http://vrici.lojban.org/~cowan xxxxxx@ccil.orgWhen I wrote it I was more than a little febrile with foodpoisoning
from an antique carrot that I foolishly ate out of an illjudged faith
in the benignancy of vegetables. --And Rosta