0

在 REPL 我做: * (defpackage :foo (:use common-lisp)) * (in-package :foo)

#<PACKAGE "FOO">

* *package*

#<PACKAGE "FOO">

如果我写文件:

尝试包.lisp:

(defpackage :foo (:use common-lisp))
(in-package :foo)

然后我加载这个文件:

* (load "try-package")
T 
* *package*
#<PACKAGE "COMMON-LISP-USER">

为什么我总是在 COMMON-LISP-USER 中,然后我应该在 FOO 中?

4

1 回答 1

0

LOAD 在加载文件之前绑定*PACKAGE*(也绑定)到它保存的值,如下所示:*READTABLE*

(let ((*package* *package*)
      (*readtable* *readtable*))
  ... ;; really load a file
)          
于 2013-02-08T10:30:40.540 回答