仮引数で宣言されていないキーワードを渡す - lisp-cookbook-ja/common-lisp GitHub Wiki

仮引数で宣言されていないキーワードを渡すには、呼び出し側の実引数に、

:allow-other-keys T

を指定します。

(defun foo (&key x y)
  (list x y))

(defun bar (&rest args &key x)
  (apply #'foo args))

(bar)
;=> (nil nil)

(bar :y 42)
;>>> error

(bar :y 42 :allow-other-keys T)
;=> (nil 42)

上記の例の場合、bar呼び出しているfooも

(foo :y 42 :allow-other-keys T)

となっていることに注意してください。

用途

make-instance 等、総称関数で引数が多重に定義されている場合や、下請けも同様の引数を持ち回る場合などで問題を回避するために用いられることがあります。