А если уж заговорили зачем-то о лиспе.. Лисп действительно великий язык. Он стирает грань между разработчиком компилятора и прикладным программистом. Там нет этой дурацкого разделения, порога между тем и другим. И это правильно.
Благодаря тому, что когда программист на лиспе пишет программу, он непосредственно видит синтаксическое дерево, у него не возникает в последствии проблем с его модификацией/созданием програмным способом, т.е. макросами. В отличае от языков где наличиствует т.н. "синтаксис" (тот же Оберон например). В этих языках программист может писать программу и не догадываться что такое синтаксическое дерево вообще, и как оно выглядит на его языке. Поэтому, когда ему говорят про макросы, он сразу кричит "нихачу, нимагу, нинужны!".
Проверить работу макроса в лиспе очень просто -- запускаем макрос и результат его работы распечатываем. Проверяем.
2Geniepro: Зефиров помнится критиковал лисп за то, что эти самые макросы-спецформы не являются нормальными функциями, т.е. их не передать в качестве аргумента в другую функцию. А выглядят они в точности также, т.е. синтаксически не отличимы от обычных функций.