Изменения пакета во время загрузки или операции компиляции не изменяют текущий пакет для REPL.Это было бы очень раздражающим при обычном использовании.Системы также не соответствуют пакетам 1-к-1, поэтому может не быть пакета с одинаковым именем, и система может иметь несколько пакетов.Однако для удобства разработки вы можете добавить функцию в ваш файл инициализации (~/.sbclrc
для SBCL), которая загружает систему и устанавливает *PACKAGE*
для пакета с тем же именем.Например,
(require :asdf) ;Quicklisp also requires ASDF, so you could put this after its init too
(defun l (system-name)
(asdf:load-system system-name)
(setf *package* (find-package system-name)))
Функция будет в пакете CL-USER
.Поскольку это только для разработки, ошибки для несуществующих систем или пакетов могут обрабатываться в интерактивном режиме.Обратите внимание, что вы должны вызывать его, используя ключевое слово для имени, а не строку, или, в качестве альтернативы, строковый регистр имени перед вызовом FIND-PACKAGE
.