據我所知,#' <object>
是(function <object>)
的縮寫。lisp中「#'」的行爲
但我注意到在應用函數中使用#'
時行爲不同。
例
(apply '+ '(1 2)) => Works and give 3
(apply (function +) '(1 2)) => 3
然而
(apply '# '(1 2)) => Err!!
據我所知,#' <object>
是(function <object>)
的縮寫。lisp中「#'」的行爲
但我注意到在應用函數中使用#'
時行爲不同。
例
(apply '+ '(1 2)) => Works and give 3
(apply (function +) '(1 2)) => 3
然而
(apply '# '(1 2)) => Err!!
如reference描述:
記號
#'name
可以用作用於(function name)
的縮寫。
注意,使用的語法爲#'
,不'#
,這只是一個方式引用符號#
,因爲'a
相當於(quote a)
。
所以,你應該使用:
(apply #'+ '(1 2))
一般後跟一個字符的字符#
具有用於輸入值的特殊含義。例如#\
用於讀取字符(如在#空格中),#(
用於讀取載體(如在#(1 2 3)
中)等。
#符號由讀者實現。
如果你想看到的效果,比如,你可以使用這個:
CL-USER 1 > (read-from-string "#'+")
(FUNCTION +)
3
CL-USER 2 > '#'+
(FUNCTION +)
謝謝! (愚蠢的錯誤在我身邊) – Tanmay
#是默認的閱讀器宏字符,按照慣例。用不同的起始字符可以很容易地做到這一點。 – Sylwester