我熟悉 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 中是这样。