核心概念
adjoint modalities(随伴モダリティ)に基づく、メモリ管理機能を備えた新しい多相メタプログラミングの基盤が提案されています。
要約
メモリ管理を備えた多相メタプログラミング - メタプログラミングの随伴分析
この論文は、メモリ管理を備えたメタプログラミングのための統一的な多相基盤であるElevatorについて述べています。Elevatorは、 adjoint modalities(随伴モダリティ)に基づいており、モードを使用して線形メモリ領域や従来のメモリ領域など、複数のメモリ領域を区別します。
モードによるメモリ領域の区別
Elevatorでは、モードを使用して異なるメモリ領域を区別します。各モードは、線形(ガベージフリー)や従来の(ガベージコレクションまたは永続的)など、特定の構造的特性のセットを持ちます。
モード間の順序関係によるアクセス制御
モード間の順序関係を使用して、メモリ領域間のアクセス可能性を表現します。例えば、m ≥ k は、メモリ領域 k がメモリ領域 m を参照できることを意味します。
随伴モダリティによるメモリ領域間の移動
↓ (ダウンシフトモダリティ) と ↑ (アップシフトモダリティ) という2つの随伴モダリティを使用して、領域間を移動します。ダウンシフトモダリティは、ある領域のオブジェクトへのポインタとして解釈され、アップシフトモダリティは、サスペンドされたオブジェクト(テンプレート)を表します。
メタプログラミングへの応用
メタプログラミングでは、モード C はサスペンドされたプログラム(コード)を表し、モード P はプログラムを表します。C ≥ P であるため、コードはプログラムからアクセスできます。
コード生成の効率化
Elevatorでは、テンプレートの生成と合成を、最終結果の格納と分離することで、コード生成中のメモリアクセスを最小限に抑えます。
ポリモーフィックなコード生成
System-Fスタイルのポリモーフィズムを追加することで、ポリモーフィックなコード生成が可能になります。