我感到困惑如何defun定義宏的工作方式,因爲爲什麼defun不一樣(setq <name><lambda>)?
(defun x() "hello")
將創建函數x,但符號X仍然將是自由的。
如果我會結合一些拉姆達爲x,則x將有一個價值,但它不會被解釋的形式這樣視爲功能:
(x)
我認爲這是關係到事實上,defun應該在全球環境中定義功能,但我不確定它到底意味着什麼。爲什麼我不能在當前的環境中使用它?
有沒有什麼辦法強制解釋器對待符號作爲函數,如果一些lambda綁定到它?例如:
(setq y (lambda() "I want to be a named function"))
(y)
P.S .:我正在使用SBCL。