我是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