【发布时间】:2020-08-01 12:42:38
【问题描述】:
我使用delete-package 作为一种简单的方法来取消大量旧的(用户指定的)变量名,然后在对包文件进行某些编辑后重新加载项目。 (否则,新值可能会将 pushed 附加到最终用户定义的那些变量名的旧值上。)但是当我在删除后尝试重新加载时,SBCL 会抱怨。
在一次性加载一个设置 Quicklisp、ASDF 并安装一些 Quicklisp 库的init.lisp 文件后,我使用(progn (asdf:load-system “my-project”) (in-package :my-package)) 加载项目,其中项目定义my-project.asd 文件包含
(when (find-package :my-package)
(delete-package :my-package))
(defpackage :my-package
(:use :cl))
(asdf:defsystem "my-project"
…)
这一切在第一次加载时运行良好,但在项目的第二次加载时出现问题,因为
*PACKAGE* can't be a deleted package:
It has been reset to #<PACKAGE "COMMON-LISP-USER">.
错误来自哪里?能否修复它,保留相同的功能?
【问题讨论】:
标签: package common-lisp sbcl asdf