Convergeには、非常に印象的なメタプログラミング機能があります。
単純なレベルでは、これはマクロに似た機能と見なすことができますが、コンパイル時に任意のコードを実行できるため、既存のほとんどのマクロ機能よりも強力です。これを使用して、コンパイラと対話し、ITree(別名抽象構文ツリー)として安全かつ簡単にコードを生成できます。
これは、参照的に透過的なマクロ定義を可能にするSchemeの衛生的なマクロからのステップアップです。
準リテラルなどのメカニズムにより、他の言語で構文解析ツリーを構築および分解できますが、自己修正ではなく、ドメイン固有言語(DSL)とのやり取りに使用されることが多くなっています。
Newspeakのリフレクションにより、例外をライブラリコードとして実装できます。
7.6例外処理
Newspeakはアクティベーションレコード(3.6)へのリフレクトアクセス(7.2)を提供するため、例外処理は純粋にライブラリの問題です。このプラットフォームは、Smalltalkと同様に、例外のスロー、キャッチ、および再開をサポートする標準ライブラリを提供します。
Perligata:Romanaは、まったく新しい構文を言語に適用する方法を示しています。
このペーパーでは、Perlプログラムをラテン語で記述できるようにするLingua :: Romana :: PerligataというPerlモジュールについて説明します。
セマンティクス的に重要ではないことは間違いありませんが、PyPyは、セマンティクスが高度に静的に解析可能なPythonのサブセットで指定されている言語のインタープリタージェネレーターであり、それを使用して、言語にサンクを追加するようなPythonの新しい言語構成を実験します。
Ometaも興味深いかもしれません。
この論文は、コンピューターサイエンスの実験に焦点を当てています。特に、実験をサポートするために特別に設計された新しいプログラミング言語と構造が、研究者とプログラマの仕事を大幅に簡素化できることを示します。
私は、非常に異なる2種類の実験に対処する作品を発表しています。最初の目的は、プログラミング言語の研究者が新しいプログラミング言語や既存の言語の拡張機能のプロトタイプを簡単に作成できるようにすることで、アイデアを実験するのを支援することです。もう1つは、プログラム自体がさまざまなアクションや可能性を試すことができるようにすることにより、プログラミングパラダイムとして実験を調査します。または可能な世界の推論。
Alex Warthの論文では、Ometaを使用してJavaScript + Ometaで大幅に新しいセマンティクス(世界を介したトランザクションセマンティクス)を定義する方法を示しています。