Без заголовка
касательно программирования на мета-уровнях, я некоторое время назад пришел к выводу, что это сколько-нить разумно это делать только на реврайтовых языках типа Pure (Maude OBJ специализированные для графов реврайтовые языки)
и то скорее всего сам Pure не очень, но очень интересна комбинация мета-, реврайтинга и динамических типов - статические типы на мета-уровнях конечно возможны, но это сплошной взорви-моск, в силу принципиальных ограничений на вывод типов