2012-10-10 111 views
1

下面的代碼工作,但我不得不加載swank無論我是否需要它。我可以懶洋洋地加載swank嗎?

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

如果我將「(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)) 
相關問題