OCamlSpotter が OCaml に取り込まれる方向へ

初めから狙っていたとはいえ、こういうの必要みたいだから、正式にコンパイラに取り込んでもいいよ、というお達しがあり、純粋に嬉しい。
もちろん、そのままって言うわけにはいかなくて、これから caml-list で議論していくわけだけれど、私が基本的に主張したいことはほとんど既に実装してしまっている:

  • コンパイラ内では面倒なことはせず、ただただ転がっている便利そうな情報をファイルに保存する。INRIA チームの保守責任は低いほうが良い。
  • 面白そうな解析は外部ツールでやる。外部ツールは critical じゃないのでサードパーティーが作ったり保守すればいい。(OCamlSpotter なら、コンパイラのソースに初めからつけてもらってかまわない。)
  • ファイルフォーマットは output_value が便利でよい

最後は、まあちょっと疑問もあるが、最初の二つは絶対に外せないだろう。このまま押し切って行きたい。この辺りのことを深く考えずに突っ込んでくる人がいるが、とりあえずでも実装したやつの知見のほうが強い、と思いたい。

実はこの3点から導かれる外部ツールの技術的性格は、必然的に、 program abstraction して、monomorphic typed lambda term のプログラムを得て、それを lazy link, lazy evaluation する、という物になる。少なくとも私には trivial なことではなかったんだが、これに気づいてから実装が一気に楽になった。