¿Por qué usar # 'antes de los argumentos de la función en emacs-lisp?

Estoy familiarizado con Emacs Lisp, pero no con Lisp común (o cualquier otro). Algunos programadores Lisp sugieren (por ejemplo,Una función básica para emacs.) que es bueno usar#' En frente de argumentos de función en código Lisp. Por ejemplo:

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

En Emacs Lisp, creo que esto es equivalente a

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

Del manual elisp, sección 12.7.

La sintaxis de lectura.#' es una mano corta para usarfunction. Las siguientes formas son todas equivalentes:

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

y la ayuda parafunction

La función es una forma especial eneval.c.

(function ARG)

Me gustaquote, pero preferido para los objetos que son funciones. En compilación de bytes,function hace que su argumento sea compilado.quote No puedo hacer eso.

Así que parece una optimización potencial, pero no más. Además, proveniente de un fondo de ML / Haskell, parece extraño tratar una función de manera diferente a cualquier otro dato.

Pregunta:

Estas de acuerdo que#' debe ser utilizado enemacs-lisp argumentos de función? (Una breve explicación de por qué son necesarios en Common Lisp también sería genial).

Notas:

Pensé que podría leer una celda diferente cuando el#' se omite (valor vs función). Pero esto parece mal porque la documentación parafunction No dice nada acerca de agarrar la célula de función. Esto se logra utilizandosymbol-function.

Preguntas relacionadas son

El # 'en comúnEscribiendo expresiones lambda en común¿Por qué # 'se usa antes de lambda en Common Lisp?

pero parecen sugerir que la#' Es innecesario, al menos en las lambdas.

Respuestas a la pregunta(1)

Su respuesta a la pregunta