Александрия Лисп Руководство и внедрение

Пакет 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 не будет влиять на функцию, так как это не макрос.

Другие вопросы по тегам