ヒューリスティックな型推論

もはや型推論と呼べないことは承知ですが、あえてメモしておきます。主に補完目的の話です。

Rubyなどの動的言語ではevalやsendを使うことで、簡単に型推論できない状況を作り出すことができます。そのような状況では当然、精度の良い補完を提供できません。そういう場合の解決策として、変数名やメソッド名から適切な型をヒューリスティックに推測してくれると良いかもしれません。

例えば、以下のようになります。

  • fileという名前はStringかFileのオブジェクトだろう
  • gsubというメソッドが呼ばれているオブジェクトはStringだろう
  • mapというメソッドが呼ばれているオブジェクトはEnumerableをincludeしたクラスだろう
  • <<というメソッドが呼ばれているオブジェクトはArrayとかIOだろう

こんな機能が入るのはかなり先だと思いますが、実際に実行するタイプの補完プログラムには負けないぐらいの精度にはしたいです。