2011-12-02 31 views
2

這是做什麼的正確方法?我錯過了LISP中符號的一些重要事實嗎?

(defparameter form1 (list 'baz "hello")) 
(setf (car form1) (intern "print")) 
(eval form1) 

是什麼意義|| (實習生)使用?
#:的意義是什麼? (make-symbol)使用?

如果它們只是名稱的一部分,創建一個與我指定的符號不同的符號的基本原理是什麼?

更新: (實習生 「打印」) 工作

+0

請注意,您修改文字數據。通常這在便攜式Common Lisp中是未定義的,因此Common Lisp程序應該避免這種情況。您可以通過LIST,COPY-LIST和其他操作破壞性地修改新近列出的列表。 –

+0

我更改了示例代碼 – sabof

回答

5

的豎線是符號的報價。您在源代碼中直接輸入的符號不會使用它們,因爲閱讀器會將它們轉換爲全部大寫,並且全部大寫符號不需要用引號引起來。

位於前面的#:表示未被幹擾的符號,即不屬於任何包的符號。 intern將符號放入當前包中。只有當前包裝的符號纔會被打印出來,而沒有包裝的名稱。

相關問題