LISP - Parâmetros de repouso

Algumas funções precisam de um número variável de argumentos.

Por exemplo, o formatfunção que estamos usando precisa de dois argumentos obrigatórios, o fluxo e a string de controle. No entanto, após a string, ele precisa de um número variável de argumentos, dependendo do número de valores a serem exibidos na string.

Da mesma forma, a função + ou a função * também pode receber um número variável de argumentos.

Você pode fornecer esse número variável de parâmetros usando o símbolo &rest.

O exemplo a seguir ilustra o conceito -

Exemplo

Crie um novo arquivo de código-fonte denominado main.lisp e digite o seguinte código nele.

(defun show-members (a b &rest values) (write (list a b values)))
(show-members 1 2 3)
(terpri)
(show-members 'a 'b 'c 'd)
(terpri)
(show-members 'a 'b)
(terpri)
(show-members 1 2 3 4)
(terpri)
(show-members 1 2 3 4 5 6 7 8 9)

Quando você executa o código, ele retorna o seguinte resultado -

(1 2 (3))
(A B (C D))
(A B NIL)
(1 2 (3 4))
(1 2 (3 4 5 6 7 8 9))