For about three months now I have been working on a "little" project in CHICKEN Scheme[1]. I really missed the Racket-style keyword arguments there and therefore I hacked together a few syntax-rules and one CHICKEN-specific hack (determining whether given token is a keyword during expansion) and now I can use Racket-style keyword arguments almost like in Racket. The code is available at:
If you want to use Racket-style keyword arguments in your CHICKEN projects, just grab the racket-kwargs.scm file and use define* and lambda* forms like you would use regular define and lambda forms. If you are compiling your code, the error messages should be both very informative and point you to the right source location. If you are using the interpreter, the source location is not available as of now.
While working on it, I discovered SRFI-89 and wondered what was the reasoning behind the syntax used by Racket? Why not the way SRFI-89 does it? Rumor is that Racket-style keyword arguments predate SRFI-89 - but it would be interesting to know the rationale behind the syntax we use.
Also any other comments regarding the (very inefficient) implementation are welcome.