پارامتر اختیاری در «لیست لامبدا» با کلیدواژهی &optional مشخص میشود.
پارامترهای اختیاری الزامی نیستند، میتوانند مقدار پیشفرض داشته باشند و همچنین میتوانند یک «پارامتر supplied-p» را مشخص کنند که بسته به این که آرگومانی برای آن پارامتر فراهم شده باشد یا نه، «درست» یا «غلط» خواهد بود.
(defun optional-parameter (&optional (arg -1)) arg)
(optional-parameter) ; => -1
(optional-parameter 13) ; => 13
پارامترهای اختیاری باید بعد از پارامترهای الزامی اما قبل از پارامترهای نامدار یا پارامترهای rest قرار بگیرند. آرگومانها ابتدا به پارامترهای الزامی مقید میشوند، سپس به پارامترهای اختیاری و در نهایت به پارامترهای rest و نامدار.
(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 ببینید.