尖锐的引号(#')与符号函数有何不同?

dje*_*lin 1 lisp elisp common-lisp sharp-quote

对我来说,这些运营商似乎做了同样的事情.两者都采用符号并返回与之关联的函数.有什么区别吗?

elisp 评估返回以下内容:

(defun foo(x)(+ 1 x))
foo
(foo 3)
4
#'foo

我也不明白.

常见的lisp和elisp有区别吗?我正在从中学习资源.

Rai*_*wig 6

Common Lisp:

SYMBOL-FUNCTION无法从词法绑定函数中检索函数.FUNCTION默认情况下引用词法绑定函数.#'foo只是一个较短的符号(FUNCTION foo).

CL-USER 1 > (defun foo () 'foo)
FOO

CL-USER 2 > (flet ((foo () 'bar))
              (list (funcall (symbol-function 'foo))
                    (funcall #'foo)
                    (funcall (function foo))
                    (eq (function foo) (symbol-function 'foo))))
(FOO BAR BAR NIL)

CL-USER 3 > (eq (function foo) (symbol-function 'foo))
T
Run Code Online (Sandbox Code Playgroud)