Keyword parameters can be defined with the &KEY
keyword. They are always optional (see the Optional Parameters example for details of the definition). There may be multiple keyword parameters.
(defun foobar (x y &key (z "Default" zp))
(format t "X (~s) and Y (~s) are required.~@
Z (~s) is a keyword argument. It ~:[wasn't~;was~] given.~%"
x y z zp))
(foobar 10 20)
; X (10) and Y (20) are required.
; Z ("Default") is a keyword argument. It wasn't given.
;=> NIL
(foobar 10 20 :z 30)
; X (10) and Y (20) are required.
; Z (30) is a keyword argument. It was given.
;=> NIL