A vírgula é usada no contexto de uma lista com aspas posteriores (também conhecida como quasiquoted), que permite avaliar algumas partes da lista seletivamente. Consulte também este tópico para obter um exemplo de uso para aspas posteriores.
Alguns exemplos simples:
(setq a "a's value" b "b's value" c "c's value")
'(a b c) ; => (a b c)
`(,a b ,c) ; => ("a's value" b "c's value")
As vírgulas às quais você está se referindo estão em uma definição de macro que, por sua vez, usa um aspas progn
:
(defmacro add-annoying-arrows-advice (cmd alternatives)
`(progn
(add-to-list 'annoying-commands (quote ,cmd))
(put (quote ,cmd) 'aa--alts ,alternatives)
(defadvice ,cmd (before annoying-arrows activate)
(when annoying-arrows-mode
(aa--maybe-complain (quote ,cmd))))))
,cmd
dentro da cota posterior, você pode colocar o valor de cmd
no lugar, em vez do símbolo cmd
.
progn
significa que você precisa colocar uma vírgula na frente das coisas que deseja avaliar, não importa a que distância esteja aninhada? (A,cmd
está dentro de outra lista, não diretamente dentro(progn)
.)