コンテンツにスキップ

型付き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式の木構造表現だけが利用されればよく、それ以上の機能は必須ではない。