Так и делаю, но заметь, что язык разбивается на два, один для метапрограммирования, другой для времени выполнения и частично для метапрограммирования.
я тут не понял мысль: если в языке будет возможность оперировать типами как данными как это будет ложиться на рантайм? получиться что это нельзя будет использовать в рт и это как раз и будет разделение языка на 2 части ещё сильней