我在Common Lisp中收到以下錯誤消息。什麼| 5E |在Common Lisp中是什麼意思?
什麼?意味着在CL?
CL-USER> (write-to-string 5e)
The variable |5E| is unbound.
[Condition of type UNBOUND-VARIABLE]
我在Common Lisp中收到以下錯誤消息。什麼| 5E |在Common Lisp中是什麼意思?
什麼?意味着在CL?
CL-USER> (write-to-string 5e)
The variable |5E| is unbound.
[Condition of type UNBOUND-VARIABLE]
| foo |只是符號的印刷表示。 5e默認不讀爲數字,所以它是一個符號,可以打印爲| 5E |。我們也可以使用它來在符號中包含各種字符,包括空格。 |這是一個符號,不是嗎?| - 它是!
CL-USER > (describe '|this is a symbol, isn't it?|)
|this is a symbol, isn't it?| is a SYMBOL
NAME "this is a symbol, isn't it?"
VALUE #<unbound value>
FUNCTION #<unbound function>
PLIST NIL
PACKAGE #<The COMMON-LISP-USER package, 798/1024 internal, 0/4 external>
還要注意,Common Lisp默認使用大寫符號。讀取的符號將被大寫。所以符號foo被讀取,然後有一個符號名稱「FOO」。要表示小寫或混合大小寫字母的符號,可以使用| foo |。如果你用類似於(intern「foo」)的東西創建一個小寫符號,那麼它也會被打印爲| foo |。如果您創建一個帶有類似於(intern「FOO」)的uppcase命名符號,則它將被打印爲foo。這就是5e打印爲| 5E |的原因用大寫字母E.
如果您有符號,可以使用SYMBOL-NAME函數將其名稱作爲字符串獲取。
您可以使用PARSE-INTEGER函數從字符串中讀取一個整數。它有一個關鍵字參數:RADIX,您可以在其中提供讀數的基數。
CL-USER > (parse-integer (symbol-name '5e) :radix 16)
94
否則使用#x5e等十六進制數字或更改讀取基數。
Frank Shearar指出Common Lisp HyperSpec中的文檔:2.3.4 Symbols as Tokens。
CLHS第2.3.4節描述符號的語法。 – 2010-07-01 07:06:56
非常感謝您的詳細回覆。 – jeon 2010-07-02 05:41:59