Rubyで型推論は可能なのか?

ShiroさんのGoogleでのGaucheの講演が非常に面白かったです。

http://jp.youtube.com/watch?v=WEBOdWyGE3E

中でも将来Gauche型推論を行って、コンパイラマクロで利用するという話にわくわくしました。
コンパイラマクロは次のページが詳しくて分かりやすいです。

http://lispuser.net/memo/misc/2007-04-01-14-57.html

こういう機能があると色々出来ていいなーと思い、Rubyで実現できないものかと思いました。Rubyだと柔軟すぎて多分不可能なので、言語仕様を制限すれば出来そうな気がします。こんな感じです。

  1. メソッドの再定義は禁止
  2. 1つの変数に違う型のデータを入れてはいけない。例えばこんなのは禁止
  a = 1
  a = 'a'

ただし、nilは例外。でも、これRuby?って言われると、よく似た違う言語ですと答えないといけないですね。
あとは、サブクラスは同じ型かとか、特異クラスとか一杯考えないといけないです。書いていてなんか無理そうな気がしてきた。

コンパイラマクロはVM::InstructionSequenceを使えば実現できそうな気がします。APIの設計が難しそうですが。そういやdefmacroを実現する話がストップしている。風呂敷広げすぎです。実害は無いけど・・・。