Un parametro opzionale è indicato dalla parola chiave &optional della lambda list.
I parametri opzionali non sono obbligatori, possono avere un valore predefinito e possono anche specificare un «parametro supplied-p», che sarà «vero» o «falso» a seconda che sia stato fornito o meno un argomento per il parametro.
(defun optional-parameter (&optional (arg -1)) arg)
(optional-parameter) ; => -1
(optional-parameter 13) ; => 13
I parametri opzionali devono essere inseriti dopo i parametri obbligatori, ma prima dei parametri denominati o rest. Gli argomenti vengono prima associati ai parametri obbligatori, poi ai parametri opzionali e infine ai parametri rest e denominati.
(defun req-and-opt (req &optional (opt -1)) (list req opt)
(req-and-opt 1) ; => (1 -1)
(req-and-opt 1 13) ; => (1 13)
Sebbene più tipi di parametri possano essere combinati con altri tipi di parametri (parametri opzionali e keyword) questo può essere problematico e va fatto con attenzione. Vedi la sezione "Mescolare tipi di parametri diversi" in Practical Common Lisp.