Я ей заменяю поименно символы в теле макроса на gensym
-ы, их же подставляю в labels
определения. DSL на коленке.
Звучит как code walker, а это значит, он почти наверняка где-то ошибается, а это плохо. gensym'ы надо ставить более контролируемым образом. Есть with-gensyms, есть once-only, можно и вручную, но subst это опасно.