Александрия Лисп Руководство и внедрение
Пакет ALEXANDRIA, кажется, широко используется в сообществе Common-Lisp. Тем не менее, единственная документация, которую я нашел, это черновая версия руководства, которая приводит к паре вопросов:
1) Есть несколько макросов, таких как reversef
, которые перечислены под заголовком "Conses", но, похоже, также работают для "Sequence" в целом:
(defparameter vec (vector 1 2 3))
#(1 2 3)
(alexandria:reversef vec)
#(3 2 1)
vec
#(3 2 1)
Есть ли какая-то техническая причина, по которой они помещены в "Conses"?
2) Есть ли способ заглянуть внутрь макросов, чтобы увидеть, как они построены? Делая на них макроэкспон доходит до стены:
(macroexpand '(alexandria:rotate vec))
(ALEXANDRIA.0.DEV:ROTATE VEC)
3) Есть ли более формальные спецификации для Александрии?
1 ответ
REVERSEF
должны быть перечислены в последовательности.
ROTATE
это не макрос. Это функция. С помощью macroexpand
не будет влиять на функцию, так как это не макрос.