Common lisp 如何加载和使用quicklisp程序
我已经设置了quicklisp(使用最新的SBCL)并完成了 我得到了答复Common lisp 如何加载和使用quicklisp程序,common-lisp,sbcl,quicklisp,Common Lisp,Sbcl,Quicklisp,我已经设置了quicklisp(使用最新的SBCL)并完成了 我得到了答复 To load "draw-cons-tree": Load 1 ASDF system: draw-cons-tree ; Loading "draw-cons-tree" ("draw-cons-tree") 我检查了一下我的quicklisp目录,发现它已经被下载了,基本上就是下载的内容。那么,在我打开的SBCL REPL中如何实际使用draw cons tree?github网站说: * (dra
To load "draw-cons-tree":
Load 1 ASDF system:
draw-cons-tree
; Loading "draw-cons-tree"
("draw-cons-tree")
我检查了一下我的quicklisp
目录,发现它已经被下载了,基本上就是下载的内容。那么,在我打开的SBCL REPL中如何实际使用draw cons tree
?github网站说:
* (draw-tree '(a b (c nil 1)))
应该产生
[o|o]---[o|o]---[o|/]
| | |
A B [o|o]---[o|o]---[o|/]
| | |
C NIL 1
NIL
但我只是想
debugger invoked on a UNDEFINED-FUNCTION in thread
#<THREAD "main thread" RUNNING {10005385B3}>:
The function COMMON-LISP-USER::DRAW-TREE is undefined.
每次我想用它的时候就把它装进去?我试过了,奇怪的是,至少对我来说,我得到了一个重新定义函数的警告列表,一个是
drawtree
。所以我的REPL知道draw tree
但不知道?这里缺少什么?Quicklisp加载一个系统,该系统可能会向您的环境中添加零个、一个或多个包。有时,这些软件包的名称很容易猜测,例如当您安装systemcl ppcre
时,您有一个名为“cl-ppcre”
的软件包,您可以从中运行程序。有时,您必须阅读文档以了解如何使用您安装的系统
但是,如果您正在寻找一个特定的函数,那么您可以适当地使用apropos
:
CL-USER> (apropos "draw-tree")
DRAW-CONS-TREE::%DRAW-TREE
DRAW-CONS-TREE:DRAW-TREE (fbound)
:DRAW-TREE (bound)
这里有一个导出符号,可以使用其名称完全限定来调用它:
(DRAW-CONS-TREE:DRAW-TREE ...)
或者先使用包,以便可以从当前包访问符号:
> (use-package "DRAW-CONS-TREE")
> (draw-tree ...)
或者,定义一个使用该包的新包,或者使用包中的进入该包以访问其符号,等等
请参阅。系统draw-cons-tree
定义了一个名为draw-cons-tree
的包,该包导出一个名为draw-tree
的函数。要调用函数,您必须使用该函数的包限定名,即(draw cons tree:draw tree…
),或将函数名导入当前包(例如,使用(use package:draw cons tree)
)。我将阅读Seibel一章。然而,我杀死了我的sbcl repl,重新启动了——但不得不做另一个(ql:quickload“draw cons tree”)
来恢复draw cons tree
。有趣。我想(ql:quickload“draw cons tree”)
安装了它,并让任何后续的repl找到了它。我想我已经习惯于Emacs在幕后进行(require'xyz)
JIT。@147pm quickload在quicklisp/目录下获取系统(以便后续quickload不再获取),然后在当前环境中加载系统(重新启动Sbcl,就像重新启动Emacs一样,清除运行时状态)。Emacs有一个特殊的““自动加载”功能使“require”现在可以加载什么文件;Modules,也称为Modules。不再推荐CL中也存在的require/provide方法;ASDF是更好的替代方法(quicklisp依赖于ASDF)。通常,您只需描述自己的ASDF系统“foo”,特别是其依赖项,然后调用(ql:quickload“foo”)。
(DRAW-CONS-TREE:DRAW-TREE ...)
> (use-package "DRAW-CONS-TREE")
> (draw-tree ...)