Конвергент має кілька вражаючих засобів метапрограмування.
На простому рівні це можна розглядати як об'єкт, що нагадує макрос, хоча він є більш потужним, ніж більшість існуючих засобів макросу, оскільки довільний код може бути запущений під час компіляції. Використовуючи це, можна взаємодіяти з компілятором і генерувати код безпечно і легко як ITrees (він же і абстрактні синтаксичні дерева).
що є кроком до гігієнічних макросів схеми, які дозволяють референтно прозорі макроозначення.
Такі механізми, як квазілітераль , дозволяють побудувати та знищити дерева розбору іншими мовами, але вони частіше використовуються для взаємодії з доменними мовами (DSL) замість самомодифікації.
Рефлексія Newspeak дозволяє винятки реалізувати як код бібліотеки.
7.6 Поводження з винятками
Оскільки Newspeak забезпечує рефлексивний доступ (7.2) до записів активації (3.6), обробка виключень - це суто бібліотечна проблема. Платформа забезпечить стандартну бібліотеку, яка підтримує викидання, виловлювання та відновлення винятків, як у Smalltalk.
Perligata: Romana демонструє, як цілком новий синтаксис може бути перетворений на мову.
У цьому документі описаний модуль Perl - Lingua :: Romana :: Perligata - що дозволяє писати програми Perl латиною.
Імовірно, не є семантично значущим, PyPy є генератором інтерпретаторів для мов, семантика яких визначена у високостатично аналізованому підмножині Python, і вони використовують його для експерименту з новими мовними конструкціями в Python, як додавання мов до мови.
Також цікавим може бути Омета .
Дисертація зосереджена на експериментування в галузі інформатики. Зокрема, я покажу, що нові мови програмування та конструкції, розроблені спеціально для підтримки експериментів, можуть істотно спростити роботу дослідників і програмістів.
Я представляю роботу, яка стосується двох дуже різних видів експериментів. Перше спрямоване на те, щоб допомогти дослідникам мови програмування експериментувати зі своїми ідеями, полегшивши їм прототип нових мов програмування та розширення до існуючих мов. Інші досліджують експерименти як парадигму програмування, даючи можливість самим програмам експериментувати з різними діями та можливостями - іншими словами, це спроба надати мовну підтримку, що робити, якщо ...? або можливі міркування світу.
Дисертація Алекса Уорта демонструє використання Ometa для визначення значно нової семантики (трансакційної семантики через світи) в JavaScript + Ometa.