Você pode definir uma função com parâmetros opcionais. Para fazer isso você precisa colocar o símbolo&optional antes dos nomes dos parâmetros opcionais.
Vamos escrever uma função que exibiria apenas os parâmetros recebidos.
Exemplo
Crie um novo arquivo de código-fonte denominado main.lisp e digite o seguinte código nele.
(defun show-members (a b &optional c d) (write (list a b c d)))
(show-members 1 2 3)
(terpri)
(show-members 'a 'b 'c 'd)
(terpri)
(show-members 'a 'b)
(terpri)
(show-members 1 2 3 4)
Quando você executa o código, ele retorna o seguinte resultado -
(1 2 3 NIL)
(A B C D)
(A B NIL NIL)
(1 2 3 4)
Observe que os parâmetros c e d são os parâmetros opcionais no exemplo acima.