据我所知#' <object>
是(function <object>)
的缩写。
但是我在应用函数中使用#'
时注意到了不同的行为。
实施例
(apply '+ '(1 2)) => Works and give 3
(apply (function +) '(1 2 ) ) => 3
然而
(apply '# '(1 2)) => Err!!
答案 0 :(得分:2)
符号
#'name
可用作(function name)
的缩写。
请注意,使用的语法是#'
,而不是'#
,这只是引用符号#
的一种方式,因为'a
等同于(quote a)
}。
所以你应该使用:
(apply #'+ '(1 2))
通常,后跟字符的字符#
对于输入值具有特殊含义。例如,#\
用于读取字符(如#\ Space),#(
用于读取向量,(如#(1 2 3)
)等。
答案 1 :(得分:0)
#'符号由读者实现。
如果你想看到效果,你可以使用它:
CL-USER 1 > (read-from-string "#'+")
(FUNCTION +)
3
CL-USER 2 > '#'+
(FUNCTION +)