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