2011-04-14 11 views

Respuesta

18

Es muy fácil ver la diferencia al hacer un pequeño experimento

> (let ((x '(1 2 3 4))) `(this is an example ,x of expansion)) 
(THIS IS AN EXAMPLE (1 2 3 4) OF EXPANSION) 

> (let ((x '(1 2 3 4))) `(this is an example ,@x of expansion)) 
(THIS IS AN EXAMPLE 1 2 3 4 OF EXPANSION) 

Como se puede ver el uso de @ va a colocar los elementos de la lista directamente en el interior de la expansión. Sin que consigas en su lugar la lista colocada en la expansión.

0

También se puede pensar en el @ para deconstruir la lista y agregarla a la lista aparece como se describe en Practical Common Lisp.

`(a ,@(list 1 2) c) 

es el equivalente de:

(append (list 'a) (list 1 2) (list 'c)) 

que produce:

(a 1 2 c) 
Cuestiones relacionadas