Convergere ha alcune funzionalità di meta-programmazione piuttosto impressionanti.
A un livello semplice, questo può essere visto come una struttura simile a una macro, sebbene sia più potente della maggior parte delle strutture macro esistenti poiché il codice arbitrario può essere eseguito in fase di compilazione. Usando questo, si può interagire con il compilatore e generare codice in modo facile e sicuro come ITrees (aka alberi di sintassi astratti).
che è un passo avanti rispetto alle macro igieniche di Scheme che consentono definizioni di macro referenzialmente trasparenti.
Meccanismi come i quasiliterali hanno consentito la costruzione e la destrutturazione di alberi di analisi in altre lingue, ma questi sono più spesso utilizzati per interagire con linguaggi specifici di dominio (DSL) anziché auto-modifica.
La riflessione di Newspeak consente di implementare le eccezioni come codice libreria.
7.6 Gestione delle eccezioni
Poiché Newspeak fornisce un accesso riflessivo (7.2) ai record di attivazione (3.6), la gestione delle eccezioni è puramente un problema di libreria. La piattaforma fornirà una libreria standard che supporta il lancio, la cattura e la ripresa delle eccezioni, proprio come in Smalltalk.
Perligata: Romana dimostra come una nuova sintassi può essere abbinata a una lingua.
Questo documento descrive un modulo Perl - Lingua :: Romana :: Perligata - che consente di scrivere programmi Perl in latino.
Probabilmente non semanticamente significativo, PyPy è un generatore di interpreti per linguaggi la cui semantica è specificata in un sottoinsieme altamente analizzabile staticamente di Python e lo usano per sperimentare nuovi costrutti linguistici in Python come aggiungere thunk alla lingua.
Anche di interesse potrebbe essere Ometa .
Questa tesi si concentra sulla sperimentazione in informatica. In particolare, mostrerò che nuovi linguaggi e costrutti di programmazione progettati specificamente per supportare la sperimentazione possono semplificare sostanzialmente il lavoro di ricercatori e programmatori.
Vi presento un lavoro che affronta due tipi molto diversi di sperimentazione. Il primo obiettivo è quello di aiutare i ricercatori del linguaggio di programmazione a sperimentare le proprie idee, rendendo più semplice la prototipazione di nuovi linguaggi di programmazione ed estensioni a linguaggi esistenti. L'altro indaga sulla sperimentazione come paradigma di programmazione, consentendo ai programmi stessi di sperimentare azioni e possibilità diverse - in altre parole, è un tentativo di fornire supporto linguistico per cosa succede se ...? o possibili ragionamenti sui mondi.
La tesi di Alex Warth dimostra come usare una Ometa per definire una semantica significativamente nuova (semantica transazionale attraverso i mondi) in JavaScript + Ometa.