Lisp/Clojure中的过程和#'过程有什么区别?

unj*_*nj2 5 lisp clojure

在Clojure/Lisp中评估double和#'double有什么区别?

1:2 user=> double
#<core$double__4077 clojure.core$double__4077@1acd47>
1:3 user=> #'double
#'clojure.core/double
Run Code Online (Sandbox Code Playgroud)

Sva*_*nte 6

在Clojure中,#'foo是一个简写(var foo),它返回变量对象 foo引用的,而不是它的值.在参考文献中查找:

我不确定你是否也想知道Lisp中的含义:在Common Lisp中,#'foo是一个简写(function foo),用于在不在操作员位置时访问绑定到名称的函数值foo.

  • 对,固定.当我的意思是"名字"时,我真的应该纠正我说"符号"的倾向. (3认同)
  • 有点不对劲.(function foo)查找功能值true,但不一定从符号中查找.词法函数没有涉及符号,因此它查看了与词法环境中名称(!)foo绑定的功能值. (2认同)