Por que usar # 'antes de argumentos de função no emacs-lisp?

Estou familiarizado com o Emacs Lisp, mas não com o Common (ou qualquer outro) Lisp. Alguns programadores Lisp sugerem (por ex.Uma função básica para o emacsque é bom usar#' na frente dos argumentos da função no código Lisp. Por exemplo:

(mapc #'my-fun '(1 2 3))

No Emacs Lisp, acredito que isso seja equivalente a

(mapc 'my-fun '(1 2 3))

Do manual do elisp, seção 12.7.

A sintaxe de leitura#' é um short-hand para usarfunction. Os seguintes formulários são todos equivalentes:

 (lambda (x) (* x x))
 (function (lambda (x) (* x x)))
 #'(lambda (x) (* x x))

e a ajuda parafunction

função é uma forma especial emeval.c.

(function ARG)

Gostarquote, mas preferido para objetos que são funções. Na compilação de bytes,function faz com que seu argumento seja compilado.quote não pode fazer isso.

Então parece uma otimização potencial, mas não mais. Além disso, vindo de um fundo ML / Haskell, parece estranho tratar uma função de forma diferente de qualquer outro dado.

Questão:

Você concorda que#' deve ser usado ememacs-lisp argumentos de função? (Uma breve explicação de por que eles são necessários no Common Lisp também seria ótimo.)

Notas:

Eu pensei que pode ler uma célula diferente quando o#' é omitido (valor vs função). Mas isso parece errado porque a documentação parafunction não diz nada sobre pegar a célula de função. Isto é conseguido usandosymbol-function.

Perguntas relacionadas são

O # 'em comum lispEscrevendo expressões lambda em comum lispPor que # 'é usado antes do lambda no Common Lisp?

mas eles parecem sugerir que o#' é desnecessário, pelo menos em lambdas.

questionAnswers(1)

yourAnswerToTheQuestion