抽象構文木

Schemeインタプリタ(の簡単なやつ)は、まず抽象構文木を作って、そのあと実行するという手順でやれば、IO 付きのものも結構素直に実装できると判明。特になにもしなくても、再帰呼び出しもできたし。

コンパイラも作ってた( Scheme -> Haskell -> NativeCode )んですが、文字列をごちゃごちゃと扱っているので非常にダサイです。コンパイラを作る時に、Haskell コンパイラによる型チェックとかがあるといいんですが…。

今ちょっとやる気がなくなってるんですが、またやりたくなったら Template Haskell とかの利用を考慮したいところです。