2010-02-27 26 views
10

Decir que tengo una lista de argumentos:Desenrolle/argumentos splat en Common Lisp

> (setf format-args `(t "it's ~a" 1)) 
(T "it's ~a" 1) 

¿Cómo puedo entonces "splat" o "desenrollar" esto en una serie de argumentos en lugar de un solo argumento lista, para suministro a la función de formato? es decir, me gustaría que la siguiente llamada a la función que tendrá lugar:

> (format t "it's ~a" 1) 

Como referencia, escribiría lo siguiente en Python o Ruby:

format(*format-args) 

Estoy seguro de que se puede hacer, pero tal vez estoy pensando en eso mal. Tampoco ayuda que el nombre de esta operación no parezca estar muy bien acordado ...

Respuesta

10

¡Uy! Debería haber recordado cómo lo hace javascript.

Resulta que utiliza la función se aplican, como en:

(apply #'format format-args)