Я хочу выполнить метапрограммирование на статически типизированном языке, где будут введены как мои программы, так и мои метапрограммы. Я имею в виду это в сильном смысле: если мой генератор программ компиляции, я хочу, чтобы система типов была достаточно сильной, чтобы можно было создавать только программы с правильной версией.Типизированные языки метапрограммирования
Насколько я знаю, только metaocaml может это сделать. (Нет, ни шаблоны Haskell, ни шаблоны C++ не подходят для счета - см. this paper). Вопрос: что позволяют другие языки/системы?
EDIT: Насколько я могу судить, metaocaml мертв. Олег tried to resurrect it, но это все еще застряло несколько версий за OCaml. Если кто-то хочет пойти с экспериментальными языками (то есть даже больше, чем metaocaml, кажется, что Ur и вполне возможно Idris приспосабливать счет. Любые другие новые записи в поле?
Есть вопрос? – Ken
@Ken: да - дайте мне языки/системы, которые позволяют это. Я отредактирую вопрос (хотя я вижу, что 2 ответчика прекрасно меня поняли). –
Я намеревался отметить, относительно TH, что [эта тема появилась в списке рассылки Haskell-cafe] (http://www.haskell.org/pipermail/haskell-cafe/2010-April/075753.html) немного в то время как назад, но после нахождения потока кажется, что по очевидным причинам он не помогает в ответе на этот вопрос ... –