# HG changeset patch # User Chong Yidong # Date 1254927883 0 # Node ID 4c53b5211a28b3026b01a9bf105949e74921e20c # Parent 1bfde4a3bd0571a4b01aedfd9984265f60e0c0d6 * cl.texi (Argument Lists): Clarify explicit keyword arguments. diff -r 1bfde4a3bd05 -r 4c53b5211a28 doc/misc/ChangeLog --- a/doc/misc/ChangeLog Wed Oct 07 14:33:31 2009 +0000 +++ b/doc/misc/ChangeLog Wed Oct 07 15:04:43 2009 +0000 @@ -1,3 +1,7 @@ +2009-10-07 Chong Yidong + + * cl.texi (Argument Lists): Clarify explicit keyword arguments. + 2009-10-07 Juanma Barranquero * makefile.w32-in (INFO_TARGETS, DVI_TARGETS, clean): Add eieio, ede. diff -r 1bfde4a3bd05 -r 4c53b5211a28 doc/misc/cl.texi --- a/doc/misc/cl.texi Wed Oct 07 14:33:31 2009 +0000 +++ b/doc/misc/cl.texi Wed Oct 07 15:04:43 2009 +0000 @@ -457,15 +457,26 @@ @code{b} to the keyword @code{:c}, then signal an error because @code{2} is not a valid keyword. -If a @var{keyword} symbol is explicitly specified in the argument -list as shown in the above diagram, then that keyword will be -used instead of just the variable name prefixed with a colon. -You can specify a @var{keyword} symbol which does not begin with -a colon at all, but such symbols will not be self-quoting; you -will have to quote them explicitly with an apostrophe in the -function call. - -Ordinarily it is an error to pass an unrecognized keyword to +You can also explicitly specify the keyword argument; it need not be +simply the variable name prefixed with a colon. For example, + +@example +(defun* bar (&key (a 1) ((baz b) 4))) +@end example + +@noindent + +specifies a keyword @code{:a} that sets the variable @code{a} with +default value 1, as well as a keyword @code{baz} that sets the +variable @code{b} with default value 4. In this case, because +@code{baz} is not self-quoting, you must quote it explicitly in the +function call, like this: + +@example +(bar :a 10 'baz 42) +@end example + +Ordinarily, it is an error to pass an unrecognized keyword to a function, e.g., @code{(foo 1 2 :c 3 :goober 4)}. You can ask Lisp to ignore unrecognized keywords, either by adding the marker @code{&allow-other-keys} after the keyword section