O Converge possui algumas instalações de meta-programação bastante impressionantes.
Em um nível simples, isso pode ser visto como um recurso semelhante a macro, embora seja mais poderoso do que a maioria dos recursos existentes, pois o código arbitrário pode ser executado em tempo de compilação. Usando isso, é possível interagir com o compilador e gerar código com segurança e facilidade como ITrees (também conhecidas como árvores de sintaxe abstrata).
que é um passo em frente às macros higiênicas do Scheme que permitem definições de macro referencialmente transparentes.
Mecanismos como os quase-liberais permitiram a construção e a desestruturação de árvores de análise em outros idiomas, mas esses são mais frequentemente usados para interagir com linguagens específicas de domínio (DSLs) em vez de se auto-modificar.
A reflexão do Newspeak permite que exceções sejam implementadas como código de biblioteca.
7.6 Tratamento de exceções
Como o Newspeak fornece acesso reflexivo (7.2) aos registros de ativação (3.6), o tratamento de exceções é puramente um problema de biblioteca. A plataforma fornecerá uma biblioteca padrão que suporta o lançamento, captura e retomada de exceções, como no Smalltalk.
Perligata: Romana demonstra como uma sintaxe totalmente nova pode ser aplicada em um idioma.
Este artigo descreve um módulo Perl - Lingua :: Romana :: Perligata - que possibilita escrever programas Perl em latim.
Indiscutivelmente sem semanticamente significativo, o PyPy é um gerador de intérpretes para linguagens cuja semântica é especificada em um subconjunto altamente analisável estaticamente do Python, e eles o usam para experimentar novas construções de linguagem no Python, como adicionar thunks à linguagem.
Também pode ser interessante Ometa .
Esta dissertação concentra-se na experimentação em ciência da computação. Em particular, mostrarei que novas linguagens e construções de programação projetadas especificamente para apoiar a experimentação podem simplificar substancialmente os trabalhos de pesquisadores e programadores.
Apresento um trabalho que aborda dois tipos muito diferentes de experimentação. O primeiro objetivo é ajudar os pesquisadores de linguagens de programação a experimentar suas idéias, facilitando a criação de protótipos de novas linguagens de programação e extensões a linguagens existentes. O outro investiga a experimentação como um paradigma de programação, permitindo que os próprios programas experimentem diferentes ações e possibilidades - em outras palavras, é uma tentativa de fornecer suporte de linguagem para o que aconteceria ...? ou raciocínio de mundos possíveis.
A dissertação de Alex Warth demonstra o uso de um Ometa para definir significativamente semântica nova (semântica transacional via mundos) em JavaScript + Ometa.