我可以懒散加载swank吗?

z_a*_*xis 1 common-lisp swank

以下代码可以工作,但无论我是否需要,我都要加载swank.

(ql:quickload :swank)
(defun swank ()
    (swank:create-server :port 4005 :donot-close t))
Run Code Online (Sandbox Code Playgroud)

如果我将"(ql:quickload:swank)"移动到函数swank中,那么CL将无法找到包swank.

祝商祺!

小智 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))
Run Code Online (Sandbox Code Playgroud)