Converge tiene algunas instalaciones de metaprogramación bastante impresionantes.
En un nivel simple, esto puede verse como una instalación tipo macro, aunque es más potente que la mayoría de las instalaciones macro existentes, ya que el código arbitrario se puede ejecutar en tiempo de compilación. Con esto, uno puede interactuar con el compilador y generar código de manera segura y fácil como ITrees (también conocido como árboles de sintaxis abstracta).
que es un paso adelante de las macros higiénicas de Scheme que permiten definiciones de macro referencialmente transparentes.
Mecanismos como los cuasiliterales han permitido la construcción y la desestructuración de los árboles de análisis en otros idiomas, pero se utilizan con mayor frecuencia para interactuar con lenguajes específicos de dominio (DSL) en lugar de auto-modificación.
El reflejo de Newspeak permite implementar excepciones como código de biblioteca.
7.6 Manejo de excepciones
Debido a que Newspeak proporciona acceso reflexivo (7.2) a los registros de activación (3.6), el manejo de excepciones es puramente un problema de biblioteca. La plataforma proporcionará una biblioteca estándar que admite excepciones de lanzamiento, captura y reanudación, al igual que en Smalltalk.
Perligata: Romana demuestra cómo se puede aplicar una sintaxis completamente nueva a un idioma.
Este artículo describe un módulo Perl - Lingua :: Romana :: Perligata - que hace posible escribir programas Perl en latín.
Podría decirse que no es semánticamente significativo, PyPy es un generador de intérpretes para lenguajes cuya semántica se especifica en un subconjunto altamente analizable estáticamente de Python, y lo usan para experimentar con nuevas construcciones de lenguaje en Python como agregar thunks al lenguaje.
También de interés podría ser Ometa .
Esta disertación se centra en la experimentación en informática. En particular, mostraré que los nuevos lenguajes de programación y construcciones diseñadas específicamente para apoyar la experimentación pueden simplificar sustancialmente los trabajos de investigadores y programadores por igual.
Presento un trabajo que aborda dos tipos muy diferentes de experimentación. El primer objetivo es ayudar a los investigadores del lenguaje de programación a experimentar con sus ideas, al facilitarles la creación de prototipos de nuevos lenguajes de programación y extensiones a los lenguajes existentes. El otro investiga la experimentación como un paradigma de programación, al permitir que los propios programas experimenten con diferentes acciones y posibilidades; en otras palabras, es un intento de proporcionar soporte de lenguaje para ¿qué pasaría si ...? o posibles razonamientos de mundos.
La disertación de Alex Warth demuestra el uso de un Ometa para definir una semántica significativamente nueva (semántica transaccional a través de mundos) en JavaScript + Ometa.