Зачем использовать # 'перед аргументами функции в emacs-lisp?

Я знаком с Emacs Lisp, но не с Common (или любым другим) Lisp. Некоторые программисты на Лисп предлагают (например,Основная функция для Emacs) это'хорошо использовать#' перед аргументами функции в коде Лисп. Например:

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

В Emacs Lisp я считаю, что это эквивалентно

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

Из руководства elisp, раздел 12.7.

Синтаксис чтения#' это сокращение для использованияfunction, Следующие формы все эквивалентны:

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

и помощь дляfunction

Функция является специальной формой в.eval.c

(function ARG)

подобноquote, но предпочтительнее для объектов, которые являются функциями. В байтовой компиляции,function вызывает его аргумент для компиляции.quote Не могу сделать это.

Так что похоже на потенциальную оптимизацию, но не более. Более того, исходя из фона ML / Haskell, кажется странным относиться к функции иначе, чем к любым другим данным.

Вопрос:

Вы согласны с тем, что#' следует использовать вemacs-lisp аргументы функции? (Краткое объяснение того, почему онив Common Lisp это было бы здорово.)

Заметки:

Я думал, что это может прочитать другую клетку, когда#' опущено (значение против функции). Но это кажется неправильным, потому что документация дляfunction Безразлично»ничего не сказать о захвате функциональной ячейки. Это достигается с помощью.symbol-function

Связанные вопросы

# в общих чертахНаписание лямбда-выражений в общем lispЗачем #' используется до лямбда в Common Lisp?

но они, кажется, предполагают, что#' не нужно, по крайней мере, в лямбдах.

Ответы на вопрос(1)

Ваш ответ на вопрос