我是Lisp的新手,我正在閱讀有關ANSI Common Lisp第8章中的文本生成器示例。我遵循該示例並在LET變量的作用域中定義了一個函數「see」 「prec」,Common Lisp中的未綁定變量
(let ((prec '|.|))
(defun see (symb)
(let ((pair (assoc symb (gethash prev *words*))))
(if (null pair)
(push (cons symb 1) (gethash prev *words*))
(incf (cdr pair))))
(setf prev symb)))
並將其保存到一個lisp文件中。
然後當我回到REPL,並試圖援引看到加載文件的編譯版本之後,出現錯誤:
The variable PREV is unbound. [Condition of type UNBOUND-VARIABLE]
如何調用看正常嗎?什麼是詞彙關閉?我都很困惑。
感謝您的幫助。
對不起,我以前沒有答覆。現在你已經指出了這個錯誤,我覺得很難發佈這個,甚至沒有注意到它!感謝您的耐心,您對詞彙封閉的闡釋是迄今爲止我見過的最好,最簡潔的一個! – user1667687