We'll address this issue in a couple of releases. It'll be compliant to R7RS and mostly backward-compatible to existing code. The features is already in the dev HEAD.
The trick is:
- There'll be a "keyword" module that conceptually binds and exports all possible names beginning with ':'. Each name is bound to itself.
- The keyword module is implicitly visible to Gauche native programs (inheriting "gauche" module). So, the identifiers beginning with ':' behaves as if they're keywords, unless you rebinds them explicitly.
- From vanilla R7RS, nothing is special with identifier beginning with ':'. You can import the keyword module to make it behave like keywords.
I've been writing a ton of stuff in Gauche lately and I've found the experience to be great. The standard library is well thought out and the documentation is solid (aside from the ffi / c generator but that side of things seems to be still evolving).
[1]: http://practical-scheme.net/gauche/man/gauche-refe_5.html#St...
[2]: http://practical-scheme.net/gauche/man/gauche-refe_48.html#K...
For example: