Search code examples
macroskeylispcommon-lispsbcl

&allow-other-keys , What does it do? - Common Lisp


I'm interested in knowing what &allow-other-keys is supposed to do. I'm getting shockingly few references to it and no real definitions when I consult all documentation I can get my hands on. Best I can figure out is that it's effectively an error handling bit of code that you can put after &key to suppress the checking of key arguments when the macro is being called. For reference, this is where I found it:

(defmacro macro-name ((passed-variable
                       &rest open-args
                       &key &allow-other-keys)
                      &body body)
  ...)

Solution

  • &allow-other-keys is well documented: it suppresses Keyword Argument Checking.

    In your example, it makes (macro-name (foo :bar 1) ...) an acceptable invocation of macro-name.