我熟悉 Emacs Lisp,但不熟悉 Common(或任何其他)Lisp。一些 Lisp 程序员建议(例如Emacs 的基本函数)最好#'在 Lisp 代码中的函数参数前面使用。例如:
(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 中需要它们也很好。)
笔记:
我认为#'省略时它可能会读取不同的单元格(值与函数)。但这似乎是错误的,因为 for 的文档function没有说明任何关于抓取功能单元的内容。这是通过使用symbol-function.
相关问题是
但他们似乎暗示这#'是不必要的,至少在 lambdas 中是这样。