Я хочу сделать метапрограммирование на статически типизированном языке, где будут введены как мои программы, так и мои метапрограммы. Я имею в виду это в сильном смысле: если мой генератор программ компиляции, я хочу, чтобы система типов была достаточно сильной, чтобы можно было создавать только программы с правильной версией.
Насколько мне известно, только metaocaml может это сделать. (Нет, ни шаблоны шаблонов Haskell, ни С++ не соответствуют законопроекту - см. этот документ). Вопрос: что позволяют другие языки/системы?
EDIT: Насколько я могу судить, metaocaml мертв. Oleg пытался воскресить его, но это все еще застряло несколько версий за OCaml. Если вы хотите пойти с экспериментальными языками (т.е. Даже больше, чем метакамль, кажется, что Ur и, вполне возможно, Idris соответствует счету. Любые другие новые записи в поле?