【发布时间】:2011-12-21 14:28:02
【问题描述】:
我定义了一个包
[10]> (defpackage :abc)
#<PACKAGE ABC>
[11]>
我用那个包
[15]> (in-package :abc)
#<PACKAGE ABC>
ABC[16]>
如何退出ABC[16]到[17]?
谢谢~
【问题讨论】:
标签: package common-lisp
我定义了一个包
[10]> (defpackage :abc)
#<PACKAGE ABC>
[11]>
我用那个包
[15]> (in-package :abc)
#<PACKAGE ABC>
ABC[16]>
如何退出ABC[16]到[17]?
谢谢~
【问题讨论】:
标签: package common-lisp
严格来说,您不使用带有in-package 的软件包,但您
设置当前包。要使用包,您必须使用 use-package。
回到你的问题,你已经定义了一个新包(没有使用:cl
所以你必须使用(cl:+ 1 2) 做一个加法)并将其设置为
当前包。 COMMON-LISP-USER 又名 CL-USER 是
启动 lisp 系统时的当前包,以便将其取回
你只需要做(cl:in-package :cl-user)。
Here 是一个关于 Common Lisp 包的不错的教程。 This chapter 在PCL中也很不错。但引用仍然是CLHS
【讨论】:
(cl:in-package :cl-user)。
您应该通过(in-package :cl-user) 回到:cl-user 包。
Common Lisp 包对于新手来说通常有点混乱。我还建议您阅读包裹上的Erann Gat's tutorial。
按照惯例,对于一个严肃(即大)的程序,人们倾向于在一个单独的文件中定义包定义,其中包括(defpackage :foo ... ),而真正的代码进入另一个通常以(in-package :foo)开头的文件。然后借助像ASDF 这样的系统定义工具,该文件由
包定义在实际文件之前被评估和加载。
根据我的拙见和经验,解决包之谜的最简单方法是在快速教程之后阅读由经验丰富的 lispers 开发的实际代码。
【讨论】: