假设我在net.aserve和之上构建了一个应用程序bordeaux-threads.我的包声明可能如下所示:
(defpackage :my-package
(:use :cl :net.aserve :bordeaux-threads)
(:export …))
Run Code Online (Sandbox Code Playgroud)
我使用Quicklisp,所以(ql:quickload "aserve") (ql:quickload "bordeaux-threads")在编译我的包之前我在SLIME中运行,一切都很好.
当然,明天我再次启动SLIME,我必须记得QUICKLOAD在编译之前发出s,否则我就麻烦了.
我可以把类似的东西
(eval-when (:compile-toplevel)
(ql:quickload "aserve")
(ql:quickload "bordeaux-threads"))
Run Code Online (Sandbox Code Playgroud)
在我的软件包的顶部 - 这是我为开发所做的 - 但我觉得强制一个包管理器对用户来说不是一个好主意.
还有更好的选择吗?
我使用asdf-install将ltk安装到Steel Bank Common Lisp,但我甚至无法开始使用它V_V.下面的代码是文档中最简单的示例,几乎是逐字复制的.
(asdf:operate 'asdf:load-op :ltk)
(defun hello-1()
(with-ltk ()
(let ((b (make-instance 'button
:master nil
:text "Press Me"
:command (lambda ()
(format t "Hello World!~&")))))
(pack b))))
(hello-1)
Run Code Online (Sandbox Code Playgroud)
这是我从sbcl得到的错误消息:
> ; in: LAMBDA NIL
; (PACK B)
;
; caught STYLE-WARNING:
; undefined function: PACK
; (WITH-LTK NIL
; (LET ((B (MAKE-INSTANCE 'BUTTON :MASTER NIL :TEXT "Press Me" :COMMAND #)))
; (PACK B)))
;
; caught STYLE-WARNING:
; undefined function: WITH-LTK
;
; compilation unit finished
; Undefined …Run Code Online (Sandbox Code Playgroud)