例如,#'functionname
,有必要嗎?LISP中的#是什麼意思
回答
#'Common Lisp中
的Common Lisp和其他一些Lisp的方言functionname有多個命名空間。這裏的函數和值是不同的。爲了得到一個名字的函數值,我們需要寫:
(function functionname)
自認爲是一個有點長寫的,有一個較短的符號:
#'functionname
要顯示的效果看這樣的:
(let ((foo 42))
(flet ((foo() 'bar))
(list foo (function foo) #'foo (foo))))
上面定義了一個局部變量FOO
和本地功能FOO
。 列表語句返回值的FOO
,然後使用(function ...)
符號,那麼同樣使用速記符號,然後實際調用函數FOO
價值函數值的foo
。
(function foo)
和#'foo
是相同的概念,但寫法不同。兩者都是指名爲FOO
的本地詞彙功能。 FOO
由FLET
表格作爲本地函數引入。
Lisp的REPL返回是這樣的:
(42 #<function FOO 4060008224> #<function FOO 4060008224> BAR)
以上情況說明,第一項是真正的值的變量FOO
的和接下來的兩個項目是函數值,功能綁定到FOO
。最後一項是從函數調用(FOO)
返回的符號BAR
。
Common Lisp,Emacs Lisp和ISLisp中存在正常值和函數值的名稱空間分隔。像Scheme這樣的其他Lisp方言沒有這種分離。在Scheme中,名稱只能表示一個值。
#字符。
#
字符用於在s表達式中引入特殊語法。這裏有一些例子:
#'functionname -> (function functionname)
#(1 2 3) -> the vector of the elements 1 2 3
#c(1 2) -> a complex number
#xFFFF -> a hex number
#b1111 -> a binary number
等等。 #
是所謂的調度宏字符。
ANSI Common Lisp HyperSpec描述了Section 2.4.8 Sharpsign中的#
字符。
Common Lisp可能使用了不同的向量語法。說[1 2 3]
。它也可以對複數使用不同的語法。像{1 2}
。但它不這樣做。爲什麼?原因是因爲Common Lisp試圖在語言中使用字符時經濟並且爲用戶自己的語法擴展留下了字符如[
,]
,{
和}
。通常Lisp用戶開發嵌入式語言並使其更容易一些,Common Lisp標準試圖將字符使用降至最低,並提供宏字符和調度宏字符的機制。
爲了減少字符使用量,使用單個分派字符#
,然後下一個字符確定可以表示的內容。二進制數字爲#b
。用於十六進制數的#x
。 #c
複數。 #(
矢量。 #'
用於函數名稱。還有更多。
由於Common Lisp是一種可編程編程語言,因此用戶可以更改此字符級別的語法。請參閱功能SET-DISPATCH-MACRO-CHARACTER。
- 1. N-Queen Lisp(1- n)是什麼意思?
- 2. 是什麼意思:是什麼意思?
- 3. 什麼| 5E |在Common Lisp中是什麼意思?
- 4. Common Lisp中的「functor中的非法參數」是什麼意思?
- 5. (Emacs Lisp)源代碼中的^ L是什麼意思?
- 6. 是什麼意思,在Python中是什麼意思?
- 7. SURF的min_dist和max_dist是什麼意思,FlannMatcher是什麼意思
- 8. 「?」是什麼意思?調用jsp的標記是什麼意思?
- 9. %{}是什麼意思?
- 10. '#'是什麼意思?
- 11. 「?」是什麼意思?
- 12. #{...}是什麼意思?
- 13. || =是什麼意思?
- 14. @是什麼意思
- 15. $$ $$是什麼意思?
- 16. `/ * @`是什麼意思?
- 17. 「=」是什麼意思
- 18. + =是什麼意思?
- 19. {..} [..]是什麼意思?
- 20. 什麼是:!:意思?
- 21. @ []是什麼意思?
- 22. 什麼是「||」意思?
- 23. /([^.]*)\.(.*)/是什麼意思?
- 24. &**是什麼意思?
- 25. @(...)是什麼意思?
- 26. &@是什麼意思?
- 27. 「\\。\」,「\ ?? \」,「\\?\」,「\\」是什麼意思?
- 28. &=是什麼意思?
- 29. {%=%}是什麼意思?
- 30. 是什麼意思?
您提供了一篇優秀的文章!當我需要時,我發現它! – TheGeeko61 2018-02-02 06:34:10