Mon code est comme ceci:Emacs Lisp: créer une liste en utilisant citation dans la portée locale (par exemple, la portée de la fonction)
(defun test() "Test."
(setq lista '(A))
(push 'B lista)
(nreverse lista))
(message "%s" (test)) ; Output is (A B)
(message "%s" (test)) ; Output is (B A B)
Il semble étrange parce que je pense que le résultat soit
(A B)
(A B)
Si je remplacer (setq lista '(A))
avec (setq lista (list 'A))
, je reçois le résultat attendu. Je pense que les méthodes de création de liste font la différence mais je ne connais pas les détails.
Ma version emacs est GNU Emacs 24.5.1
Votre question a déjà une réponse: 'quote' ne pas * créer * quoi que ce soit, il ne vous permet de faire référence à une valeur hardcoded dans le code. – Stefan