LISP - Parámetros de descanso

Algunas funciones necesitan tomar un número variable de argumentos.

Por ejemplo, el formatLa función que estamos usando necesita dos argumentos obligatorios, el flujo y la cadena de control. Sin embargo, después de la cadena, necesita un número variable de argumentos dependiendo del número de valores que se mostrarán en la cadena.

De manera similar, la función + o la función * también pueden tomar un número variable de argumentos.

Puede proporcionar dicho número variable de parámetros utilizando el símbolo &rest.

El siguiente ejemplo ilustra el concepto:

Ejemplo

Cree un nuevo archivo de código fuente llamado main.lisp y escriba el siguiente código en él.

(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)

Cuando ejecuta el código, devuelve el siguiente resultado:

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