Проблема не в Quicklisp, а в пакете, который вы определили где-то под названием SIGMA
.В частности, где-то в вашем коде есть форма, которая выглядит следующим образом:
(defpackage "SIGMA" ;or :sigma or :SIGMA or #:sigma or ...
...
(:use ...)
...)
А потом позже
(in-package "SIGMA")
И проблема в том, что в вашем определении пакета есть явное (:use ...)
defpackage
, а базовая функция make-package
имеет несколько интересное поведение для предложения :use
(или аргумента ключевого слова в случае make-package
):
- , если ничего не задано, то существует определяемое реализацией default;
- , если оно задано, оно отменяет значение по умолчанию.
Идея, я думаю, заключается в том, что реализации могут захотеть предоставить набор дополнительных функций, которые доступны по умолчанию, и эта функциональность не может быть в пакете CL
, так как содержимое этого пакетаопределяется в стандарте.Поэтому, если вы просто скажете
(defpackage "FOO")
, тогда реализация будет разрешена (и, возможно, поощрена), чтобы список использования FOO
содержал несколько полезных пакетов.Эти пакеты могут быть теми же, что и в списке использования по умолчанию CL-USER
, но я не уверен, что это необходимо: все это несколько недооценено.
Конечный результат этогочто если вы хотите определить пакеты, которые оба используют функциональность, определяемую реализацией и , имеют явные списки использования, вы должны прибегнуть к небольшому обману.То, как вы это делаете, зависит от вас, но, поскольку вы по определению пишете код, зависящий от реализации, для которого вы определяете пакеты, подобные этому, вы, вероятно, хотите прояснить, что то, что вы делаете, зависит от реализации, в некоторой форме, такой как
(defpackage :foo
(:use ...)
#+LispWorks
(:use :lispworks :harlequin-common-lisp :cl)
...)
Или, если вы просто хотите какой-то определенный набор символов
(defpackage :foo
(:use ...)
#+LispWorks
(:import-from :lispworks #:split-sequence))
Обратите внимание, что это не совсем то же самое, что использовать пакет, содержащий символ.
Во всех этих случаях, если у вашего кода есть претензии на переносимость, должны быть соответствующие предложения для других реализаций и способ узнать, когда вы пытаетесь запустить реализацию, которую вы еще не видели: как это сделать,Я думаю, что вне рамок этого ответа.