1

以下代码有效,但无论我是否需要,我都必须加载 swank。

(ql:quickload :swank)
(defun swank ()
    (swank:create-server :port 4005 :donot-close t))

如果我将“(ql:quickload :swank)”移动到函数 swank 中,则 CL 将找不到包 swank。

真挚地!

4

1 回答 1

6

请记住,阅读是 CL 中的一个单独阶段。首先读取一个表单,然后执行它。当读者阅读 DEFUN 表单时,它无法识别 SWANK:CREATE-SERVER 符号,因为此时 QL:QUICKLOAD 尚未执行。解决方案是使用 INTERN。

(defun swank ()
  (ql:quickload :swank)  
  (funcall (intern (string '#:create-server) :swank) :port 4005 :dont-close t))
于 2012-10-10T03:48:54.483 回答