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つの変数に違う型のデータを入れてはいけない。例えばこんなのは禁止
a = 1 a = 'a'
ただし、nilは例外。でも、これRuby?って言われると、よく似た違う言語ですと答えないといけないですね。
あとは、サブクラスは同じ型かとか、特異クラスとか一杯考えないといけないです。書いていてなんか無理そうな気がしてきた。
コンパイラマクロはVM::InstructionSequenceを使えば実現できそうな気がします。APIの設計が難しそうですが。そういやdefmacroを実現する話がストップしている。風呂敷広げすぎです。実害は無いけど・・・。