首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何加载和使用quicklisp程序

如何加载和使用quicklisp程序
EN

Stack Overflow用户
提问于 2019-04-04 13:13:13
回答 1查看 1.1K关注 0票数 2

我已经设置了quicklisp (使用最新的SBCL)并完成了

代码语言:javascript
复制
* (ql:quickload "draw-cons-tree")

我得到了回复

代码语言:javascript
复制
To load "draw-cons-tree":
  Load 1 ASDF system:
    draw-cons-tree
; Loading "draw-cons-tree"

("draw-cons-tree")

我检查了一下我的quicklisp目录,发现它已经被下载了,基本上就是these的内容。那么,我如何在已经打开的SBCL REPL中实际使用draw-cons-tree呢?github网站上写道:

代码语言:javascript
复制
* (draw-tree '(a b (c nil 1)))

应该产生

代码语言:javascript
复制
[o|o]---[o|o]---[o|/]
 |       |       |      
 A       B      [o|o]---[o|o]---[o|/]
                 |       |       |      
                 C      NIL      1      
NIL

但我只是得到了

代码语言:javascript
复制
debugger invoked on a UNDEFINED-FUNCTION in thread
#<THREAD "main thread" RUNNING {10005385B3}>:
  The function COMMON-LISP-USER::DRAW-TREE is undefined. 

这里我漏掉了什么?我使用quicklisp的另一个实际经验是slime,它在Emacs中调用了一个特定的.el文件来启动slime。我是否需要深入到目录

代码语言:javascript
复制
~/quicklisp/dists/quicklisp/software/draw-cons-tree-20131003-git/draw-cons-tree.lisp

并在每次我想使用它的时候加载它?我试过了,至少对我来说奇怪的是,我得到了一个重新定义函数的警告列表,其中一个是draw-tree。所以我的REPL知道draw-tree,但不知道?这里我漏掉了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-04-04 13:37:23

Quicklisp加载一个系统,这可能会向您的环境中添加零个、一个或多个包。有时这些包的名称很容易猜到,比如当您安装system cl-ppcre时,您有一个名为"CL-PPCRE"的包,您可以从中运行程序。有时,您必须阅读文档才能了解如何使用您安装的系统。

但是如果你正在寻找一个特定的函数,那么你可以使用apropos

代码语言:javascript
复制
CL-USER> (apropos "draw-tree")
DRAW-CONS-TREE::%DRAW-TREE
DRAW-CONS-TREE:DRAW-TREE (fbound)
:DRAW-TREE (bound)

这里有一个导出的符号,可以用它的名称完全限定来调用它:

代码语言:javascript
复制
(DRAW-CONS-TREE:DRAW-TREE ...)

或者先使用包,以便可以从当前包访问该符号:

代码语言:javascript
复制
> (use-package "DRAW-CONS-TREE")
> (draw-tree ...)

或者,定义一个使用该包的新包,或者使用in-package进入该包以访问其符号,等等。

参见Programming in the Large: Packages and Symbols

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55508310

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档