型付きLISPの再評価:ソース言語ではなく中間表現として
表示
中間表現としての型付きLISP:YOYUによる構文解析インフラとの統合
[編集]概要
[編集]型付きLISPは、ソース言語としては記述性に乏しく普及しなかった。しかし中間表現(IR)としては、構文構造の明快さと型情報の併存によって、極めて優れた特徴を持つ。本稿ではこの型付きLISPをIRとして活用する観点から再評価し、YOYUによる構文解析パイプラインへの統合の可能性を論じる。
S式構文とIRの親和性
[編集]- S式は構文木との一対一対応があるため、IRとして扱いやすい。
- パーサ不要、リーダ=構文木の構造をそのまま持つ。
- Cons、car/cdrの実装と極めて親和性が高い。
型付けによる最適化可能性の向上
[編集]- 型情報を付与することで最適化パスの実行根拠を提供できる。
- 型付きIRにより、インライン展開・レジスタ割当・副作用の制御などが容易になる。
ソース言語としての限界
[編集]- S式の記述は人間にとって冗長であり、インフィックス表記に劣る。
- 高速なコードは結局、Cやアセンブラで書かれるべき。
- 型付きLISPをソース言語とすることで得られる利点は薄い。
YOYU構文解析パイプラインとの統合
[編集]- YOYUでは既にCons構造、car/cdr、型付きヒープなどが存在。
- S式IRとの親和性が高く、型注釈を併用することで多段構文パスが自然に構築できる。
- IR上において静的型・最適化ルール・コード変換等を段階的に適用できる。
結論
[編集]型付きLISPは、プログラミング言語としては中途半端な立ち位置にあったが、構文木と型情報を統合した中間表現として見直すことで、その真価を発揮する。YOYUの構文インフラとの統合は、このアプローチの実用的な実現例となり得る。
終わりに
[編集]テキストエディタや対話環境における拡張言語としてのLISPには、条件分岐、繰り返し、クロージャ、ガーベジコレクションなど、言語としての完全な表現力が求められる。一方で、コンパイラ内部の中間表現として用いられる場合、LISPの構文的側面、特にS式の木構造表現だけが利用されればよく、それ以上の機能は必須ではない。