Я использую delete-package
как простой способ удалить много старых (заданных пользователем) имен переменных, прежде чем загружать проект обратно после определенных изменений в файлах пакета. (В противном случае новые значения могут получить push
ed для старых значений тех имен переменных, которые определены конечным пользователем.) Но SBCL жалуется, когда я пытаюсь перезагрузить компьютер после удаления.
После однократной загрузки init.lisp
файл, который устанавливает Quicklisp, ASDF и устанавливает некоторые библиотеки Quicklisp, затем я загружаю проект с (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">.
Откуда берется ошибка? Можно ли это исправить, сохранив ту же функциональность?