Probe Object
id:sshi:20050223#p2より.これ,すごくRuby的で*1面白いと思います.
Javaみたいな静的型言語には,
- 型宣言を見ればいろいろわかる
- 型エラーが静的に検出できる
というメリットがあるわけです.
Typing Rubyや型推論は2番目の効果は補完できますが,1番目の効果を補完できるかというと疑わしいわけで.プログラムの誤りの検出には役立ちますが,プログラムから有益な情報を引き出すのは,ちょっと難しいんじゃないのかというのが,僕の感覚です.関数の型ぐらいだったら,推論された型から容易に復元できますが,オブジェクトの型は複雑になるので,けっこう面倒くさいんじゃないかと.まあ,ここら辺はやってみないとわからない面がありますが.
一方,Probe Objectはというと,型エラーの検出としては弱いけれども,型宣言の省略による情報の欠落に対しては,有効に働きそうだと思います.それに,Rubyなら実装がえらい簡単なのも素晴らしいですね.
今までで一番感動した,Rubyプログラムです.