lisp 符號和符號繫結

2021-09-23 23:19:19 字數 1116 閱讀 4586

lisp中符號的型別是symbol,乙個符號就是這一型別的值.符號和整數其實差不多,只不過乙個是數字表示的乙個可以用字母表示.

* (type-of 'aaa)

symbol

*

相同的符號總是eq的

* (eq 'a 'a)

t

乙個符號可以同時繫結到變數 函式 類上,

cl-user> (find "a" (map 'list #'symbol-name (loop for s being the symbol collect s)) :test #'string=)

nilcl-user> (setf a "ddd")

; in: setf a

; (setf a "ddd")

; ==>

; (setq a "ddd")

; ; caught warning:

; undefined variable: a

; ; compilation unit finished

; undefined variable:

; a

; caught 1 warning condition

"ddd"

cl-user> (find "a" (map 'list #'symbol-name (loop for s being the symbol collect s)) :test #'string=)

"a"cl-user> (boundp 'a)

tcl-user> (defun a () ())

acl-user> (fboundp 'a)

tcl-user> (defclass a () ())

#cl-user> (find-class 'a)

#

但結構和類不能繫結到同乙個符號上

cl-user> (defstruct a x y)

acl-user> (defclass a () ())

; evaluation aborted on #" >.

cl-user>

強符號和弱符號

在c語言中,函式和初始化的全域性變數 包括顯示初始化為0 是強符號,未初始化的全域性變數是強符號。關於多個強弱符號定義型別不一致的主要有下面三種情況 1.兩個或兩個以上強符號型別不一致 2.有乙個強符號,其他都是弱符號 3.兩個或兩個以上弱符號型別不一致 對於情況一,編譯會報符號重定義錯誤。mapa...

C 強符號和弱符號

1 不允許強符號被多次定義,也即不同的目標檔案中不能有同名的強符號 如果有多個強符號,那麼鏈結器會報符號重複定義錯誤。2 如果乙個符號在某個目標檔案中是強符號,在其他檔案中是弱符號,那麼選擇強符號。3 如果乙個符號在所有的目標檔案中都是弱符號,那麼選擇其中占用空間最大的乙個。在 gcc 中,可以通過...

指標符號 和取址符號

之前對 和 符號一直理解的比較淺顯。只知道 p好像表示的是乙個指標 p表示的是乙個位址。然而這次當遇到了下面這個情況的時候 int a 10 int b a printf d n a printf d n a printf d n b printf d n b 結果 10 6487620 64876...