Возникло несколько вопросов по Macro: 1. Первый вопрос навеян топиком "(Lisp) макросы в функционалах", а именно насторожила фраза: "Макры во время компиляции выполняются, а не во время исполнения". Я как раз макры сейчас тока изучаю, я понял так, что Macro на этапе компиляции расширяется, а выполняется, когда выполняется ф-ция, в которую он входит, а если не входит ? (сам по себе). Поэтому просьба к гуру, растусуйте на примере: Например, (defmacro plus1 (x) `(+ 1 ,x)). Пусть этот макр входит в тело ф-ции (defun blabla (a b c ) ..... (plus1(b)) ...) Я так понимаю, что при компиляции ф-ции макр расширится, но не выполнится, т.к. b на этапе комп. ещё не известен. А еслиб было тоже самое, но (plus1(5)), макр вернул бы 6 при комп-ии ? А если макр отдельный, т.е. не входит в ф-ции. тогда как с аргументами ? Явно задавать надо ? В общем объясните плз. 2. Как с помощью Macro замутить FSM ? Т.е. что предлагают Lisp Macro взамен C'ым switch/case. Я так понял Macro уже являются генераторами кода на уровне комп-ии, так что должно бать достаточно просто. Если можно, простейший примерчик и вообще кошерный Lisp'овый подход к этому вопросу.