LINUX.ORG.RU

История изменений

Исправление KivApple, (текущая версия) :

Я тут понял в чём у меня проблема. Дело в том, что в реальном коде generic я создавал и экспортировал внутри макроса. Сначала присваивал внутри defmacro с помощью let локальной переменной значение (intern тут некоторая строка), а затем возвращал из макроса `(progn ...), в котором сначала вызывал (defgeneric ,локальная-переменная), а затем (export ',локальная-переменная). И почему-то в списке символов пакета эти методы оказываются с префиксом имя-пакета:, тогда как символы, которые я экспортировал по-обычному - нет. Внутри самого пакета с defgeneric defmethod работает нормально без двоеточий.

Исправление KivApple, :

Я тут понял в чём у меня проблема. Дело в том, что в реальном коде generic я создавал и экспортировал внутри макроса. Сначала присваивал внутри defmacro с помощью let локальной переменной значение (intern тут некоторая строка), а затем возвращал из макроса `(progn ...), в котором сначала вызывал (defgeneric ,локальная-переменная), а затем (export ,локальная-переменная). И почему-то в списке символов пакета эти методы оказываются с префиксом имя-пакета:, тогда как символы, которые я экспортировал по-обычному - нет. Внутри самого пакета с defgeneric defmethod работает нормально без двоеточий.

Исходная версия KivApple, :

Я тут понял в чём у меня проблема. Дело в том, что в реальном коде generic я создавал и экспортировал внутри макроса. Сначала присваивал внутри defmacro с помощью let локальной переменной значение (intern тут некоторая строка), а затем возвращал из макроса `(progn ...), в котором сначала вызывал (defgeneric ,локальная-переменная), а затем (export ,локальная-переменная). И почему-то в списке символов пакета эти методы оказываются с префиксом имя-пакета:, тогда как символы, которые я экспортировал по-обычному - нет.