Converge possède des installations de méta-programmation assez impressionnantes.
À un niveau simple, cela peut être considéré comme une fonction de type macro, bien qu'il soit plus puissant que la plupart des fonctions de macro existantes car du code arbitraire peut être exécuté au moment de la compilation. En utilisant cela, on peut interagir avec le compilateur et générer du code en toute sécurité et facilement sous forme d'ITrees (aka arbres de syntaxe abstraite).
qui est une avancée par rapport aux macros hygiéniques de Scheme qui permettent des définitions de macro référentiellement transparentes.
Des mécanismes comme les quasi - critères ont permis de construire et de déstructurer des arbres d'analyse dans d'autres langages, mais ceux-ci sont plus souvent utilisés pour interagir avec des langages spécifiques au domaine (DSL) au lieu de s'auto-modifier.
La réflexion de Newspeak permet aux exceptions d'être implémentées en tant que code de bibliothèque.
7.6 Traitement des exceptions
Parce que Newspeak fournit un accès réfléchi (7.2) aux enregistrements d'activation (3.6), la gestion des exceptions est purement un problème de bibliothèque. La plateforme fournira une bibliothèque standard qui prend en charge la levée, la capture et la reprise des exceptions, tout comme dans Smalltalk.
Perligata: Romana montre comment une syntaxe entièrement nouvelle peut être appliquée à une langue.
Cet article décrit un module Perl - Lingua :: Romana :: Perligata - qui permet d'écrire des programmes Perl en latin.
Sans doute sémantiquement non significatif, PyPy est un générateur d'interpréteur pour les langues dont la sémantique est spécifiée dans un sous-ensemble de Python hautement analysable statiquement, et ils l'utilisent pour expérimenter de nouvelles constructions de langage en Python comme l'ajout de thunks au langage.
Ometa pourrait également être intéressant .
Cette thèse porte sur l'expérimentation en informatique. En particulier, je montrerai que les nouveaux langages et constructions de programmation conçus spécifiquement pour soutenir l'expérimentation peuvent simplifier considérablement les tâches des chercheurs et des programmeurs.
Je présente un travail qui aborde deux types d'expérimentation très différents. Le premier vise à aider les chercheurs en langages de programmation à expérimenter leurs idées, en leur facilitant la création de nouveaux langages de programmation et d'extensions de langages existants. L'autre étudie l'expérimentation en tant que paradigme de programmation, en permettant aux programmes eux-mêmes d'expérimenter différentes actions et possibilités - en d'autres termes, c'est une tentative de fournir un support linguistique pour que faire si ...? ou raisonnement des mondes possibles.
La thèse d'Alex Warth démontre l'utilisation d'un Ometa pour définir une nouvelle sémantique significativement nouvelle (sémantique transactionnelle via les mondes) dans JavaScript + Ometa.