Объясни поподробнее, иначе не пойму. Список не находится в пространстве имён пакета, значит сам список возвращается как есть. В нём чтоли есть символы? Символы обязаны находиться в пространстве имён пакета, "просто" символов не бываед. Чтобы они принадлежали именно целевому пакету, нужно
Либо формировать список сразу в нужной форме, например
(in-package :src)
(defun a () '(1 2 dst::sym))
(in-package :dst)
(src::a) # <-- возвратит (1 2 sym)
(in-package :no-dst)
(src::a) # <-- возвратит (1 2 dst::sym)
Это годится только если символы результата будут юзаться в одном пакете, и заранее извесно каком.
Либо отмапить список с символами в нужный пакет, при помощи (lambda (x) (if (symbolp x) (intern (symbol-name x) *package*) x)
Хотя ИМХО ты пытаешся сделать чёто плохое и правильнее было бы реорганизовать данные так, чтобы такого не требовалось. Например отмиррорить все потенциально возможные (будет потеря производительности) либо изначально хранить их в определённом пакете, что на мой взгляд предпочтительно.