Cotizando en Common Lisp
Comencé a aprender lisp recientemente. Estaba repasando los ejemplos en el libro.Tierra de lisp y sentí que estaba entendiendo todo bastante bien hasta que llegué al siguiente ejemplo en torno al capítulo 7:
(defun quote-it (x)
(list 'quote x))
Ahora se quelist
crearía una lista con sus argumentos, como en(list 1 2 3 4)
evaluaría a la lista(1 2 3 4)
.
Y tambien se quequote
me permite citar un argumento, casi como puedo hacer con'
. Y entonces'east
es lo mismo que(quote east)
Ahora, curiosamente, la función anterior no devuelve una lista, sino que simplemente cita todo lo que le pase. Y así, si lo llamo.
(quote-it east)
simplemente regresaría'east
y no('east)
Si hubiera hecho esto, habría escrito la función como
(defun quote-it (x)
(quote x))
Y así, no tengo ni idea de por qué escribimos el comando como'quote
en(list 'quote x)
en el ejemplo del libro.
Sé que puedo cambiar entre código y datos usando comillas, como'(+ 1 2)
, pero en este caso parece que mi intención es aplicar la función de cotización aquí. Entonces por qué(list 'quote x)
?
Entonces, ¿alguien más con más experiencia puede aclarar esto?