Citando em Common Lisp
Comecei a aprender liisp recentemente. Eu estava passando por cima dos exemplos no livroTerra de Lisp e senti que estava entendendo tudo muito bem até chegar ao seguinte exemplo em torno do capítulo 7:
(defun quote-it (x)
(list 'quote x))
Agora eu sei dissolist
criaria uma lista com seus argumentos, como em(list 1 2 3 4)
iria avaliar para a lista(1 2 3 4)
.
E eu também sei dissoquote
permite-me citar um argumento, muito parecido com o que posso fazer com'
. E entao'east
é o mesmo que(quote east)
Agora, curiosamente, a função acima não retorna uma lista, mas simplesmente cita o que eu passar para ela. E assim, se eu chamo isso
(quote-it east)
simplesmente retornaria'east
e não('east)
Se eu tivesse feito isso, eu teria escrito a função como
(defun quote-it (x)
(quote x))
E então, eu não tenho idéia porque escrevemos o comando como'quote
em(list 'quote x)
no exemplo do livro.
Eu sei que posso alternar entre código e dados usando aspas, como'(+ 1 2)
, mas neste caso parece que a minha intenção é realmente aplicar a função de citação aqui. Então por que(list 'quote x)
?
Então, alguém com mais experiência pode esclarecer isso?