>> The syntax may still change a bit; John advocates (keyword-lambda (a b >> &key c d) ...) instead of (keyword-lambda (a b (c d)) ...). > > I see I have yet to write down why. Two reasons: > > 1) The use of &key (I assume non-hygienically) is much more transparent to > the human reader. Parentheses could mean anything at all > > 2) It's much easier to search documentation for "&key" than to search for > parenthesis-grouping rules. These are good reasons. While &key is used in Common Lisp lambda-list syntax, I would prefer :key which is used by Gauche, Sagittarius and STklos. Guile and Racket also use #:key which has the colon. So :key is closer to current Scheme practice. The twist is that some Schemes read :key as a keyword object whereas others read it as a symbol. This shouldn't be a problem with a powerful macro system (syntax-case, explicit renaming, define-macro) where we can call procedures to convert between keywords and symbols at will. &key does not have the above problem. I also worked from the assumption that &key or :key is non-hygienic. In the case of :key it probably has to be, since in some implementations it will be a keyword object and those are currently non-hygienic everywhere.