선택적 매개변수는 람다 리스트에서 &optional 람다 리스트 키워드로 지정해요. 선택적 매개변수는 필수가 아니고, 기본값을 가질 수 있으며, 해당 매개변수에 인자가 전달되었는지에 따라 "true" 또는 "false"가 되는 "supplied-p 매개변수"를 지정할 수도 있어요.
(defun optional-parameter (&optional (arg -1)) arg)
(optional-parameter) ; => -1
(optional-parameter 13) ; => 13
선택적 매개변수는 필수 매개변수 뒤에, 그리고 이름 있는 매개변수나 나머지 매개변수 앞에 와야 해요. 인자는 먼저 필수 매개변수에 바인딩되고, 그다음 선택적 매개변수에, 마지막으로 나머지 매개변수와 이름 있는 매개변수에 바인딩돼요.
(defun req-and-opt (req &optional (opt -1)) (list req opt)
(req-and-opt 1) ; => (1 -1)
(req-and-opt 1 13) ; => (1 13)
여러 유형의 매개변수를 다른 유형의 매개변수(선택적 매개변수와 키워드 매개변수)와 조합할 수 있지만, 이는 문제가 될 수 있으니 신중하게 다뤄야 해요. Practical Common Lisp의 "Mixing Different Parameter Types" 섹션을 참고해요.