В принципе, когда следует использовать процедуру Emacs Lisp function
? Я не нашел примеров, в которых есть разница в поведении, если вы передаете функции в качестве аргументов 'like-this
или #'like-this
. На самом деле, если я оцениваю (eq 'goto-char #'goto-char)
, он возвращает t
.
Код Emacs Lisp, с которым я столкнулся, редко использует function
/#'
; авторы просто quote
/'
все.
Пример: (add-hook 'emacs-lisp-hook 'turn-on-eldoc-mode)
Однако я могу найти несколько контрпримеров. Здесь один из исходного кода Emacs 24.3 electric.el
:
(add-hook 'post-self-insert-hook
#'electric-indent-post-self-insert-function
'append)
Угадай и дальнейшие вопросы:
- Это просто стилистическая конвенция Lisp -2?
- Это связано с байтовой компиляцией?
- Это имеет значение только для библиотек? Например, если вы хотите, чтобы ваш код запускался в огромном количестве сред и версий Emacs? (Следствие было бы, если бы вы просто "топик-мастеринг", тогда вам не нужно беспокоиться обо всем этом.)
- Когда следует цитировать лямбда-выражения? Когда я могу оставить их без кавычек?
Например,(do-something '(lambda …
по сравнению с(do-something (lambda …
- Было ли какое-то ограничение в более ранней версии Emacs, которая породила эти грани elisp? Например, могу ли я в основном игнорировать разницу между
'
и#'
, если я использую версию Emacs более позднюю, чем X?