我是 Lisp 的新手,我正在阅读 ANSI Common Lisp 第 8 章中的一个文本生成器示例。我按照示例并在 LET 变量“prec”的范围内定义了一个函数“see”,
(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 并在加载文件的编译版本后尝试调用 see 时,出现错误:
The variable PREV is unbound.
[Condition of type UNBOUND-VARIABLE]
如何正确调用 see?什么是词法闭包?我都很困惑。
感谢您的帮助。