というわけで

leafもそういう方向性で進めたいわけですが、


OOとはどう折り合いをつけるのかな……


前にOCamlコンパイラ書いたときも
gensymとintern以外破壊的操作を行わない縛りで作業したんだけども、
ASTや functional intermediate representation に
ちょっとした情報つけるためだけに
新しく木を作り直したりする必要があって、
これってどうなのと思ったりもした。


今考えると、単にモジュールのパラメタライズがへたくそだった
だけではないか、という気も
しなくもないですが。


あとクロージャエスケープ解析に
どっかの論文からパクってきたAbstract Virtual Machine
(レジスタが集合になってるような仮想機械)を
論文通りに関数型で書いたんだけども、
それも我ながら愚かだと思った。


それもこれもOCamlのOO機能が
さわらない方がよさそうな感じに見えたからですが。
もうちょっとOCamlHaskell勉強したほうがいいかな。
Scalaの方がいい?