OCaml search で欲しいものメモ

型情報から求めている関数を探すというのはそもそものアイデアhttp://www.dicosmo.org/ResearchThemes/ISOS/ISOShomepage.html この辺を参照してほしいんですけど、型付き関数型言語でのプログラム開発の超強力なツールになっていて、OCamlBrowser, Hoogle, OCaml API Search とか既にあるんです。 OCaml の関数検索ツールとして、これがあったらなー、というのをメモします:

  • Unification をサボらない。 OCamlBrowser とそれを流用した OCaml API Search は unification をサボっているので検索結果があまりよくない。 ('a -> 'a と入れても 'a -> 'b の検索をしちゃう
  • Scalability: ただし unification をきちっとやると(多分)スピードが遅くなるので、その辺は何かスバラシイ事をして早くなって欲しい。実は問題なかったりしてw 検索キャッシュとか、一々立ち上げなくてもよいように検索サーバを建てとくとかでしょうか…でも個人でも使えるようにスタンドアロンもあると嬉しい
  • CLI : CLI で結果が sexp とか OCaml friendly なフォーマットで出力されるとかしてくれると、その後はやりたい人が勝手に www のサービスとか editor 統合とかやってくれるでしょう。output_value はちょっと危ないので避けたいところ

作ったよーで終わらせたくなければ

  • インストールされてるライブラリは勝手に全部取り込めると嬉しい。世界的には OCamlFind がインストールされているというのは想定しても構わないレベル
  • さらに開発中のソースツリー上の情報も気軽に検索できるとなお嬉しい
  • コンパイルしてなくてもナントナク検索できると嬉しい… 依存が多くてコンパイルできないライブラリの検索とか提供できると、検索サーバ建てる人は嬉しいかも。.mli を読めればいいわけだし
  • もしくは、ライブラリ作者はこういうファイルを用意しておいてくれ! これこれこういうコマンドで作れるから! したら Google で勝手に検索して wget してサーバに取り込んでおくから!みたいな約束事を決めておけば皆嬉しい (.cmi はバージョンによって変わるので、バージョンに影響を受けないようなフォーマット) そうすれば向こうから検索データがやってくるようになるのではないか。うん、ていうかこれ重要な気がするよ!

こっから先は基礎を作ったら誰かがやれる話

  • OASIS 対応
  • 複数バージョンの同名ライブラリとかの情報が取り扱えると嬉しい (こないだ Hoogle で Monad.Control.void があると聞いて使ったら GHC6 には無かった…)
  • いまアイデア段階の OCaml community site に入るとカッコいい!
  • type t とか val t とか module M とか constructor Some とか書けると嬉しい…のかなあ
  • ocamlc -annot の型出力を検索に食わせて補完とか…うーん、ちゃんとした使い心地のよいものは難しいような気がする
  • CSS5 対応 (意味わからず書いてみた