Probe Object

id:sshi:20050223#p2より.これ,すごくRuby的で*1面白いと思います.

Javaみたいな静的型言語には,

  1. 型宣言を見ればいろいろわかる
  2. 型エラーが静的に検出できる

というメリットがあるわけです.

Typing Ruby型推論は2番目の効果は補完できますが,1番目の効果を補完できるかというと疑わしいわけで.プログラムの誤りの検出には役立ちますが,プログラムから有益な情報を引き出すのは,ちょっと難しいんじゃないのかというのが,僕の感覚です.関数の型ぐらいだったら,推論された型から容易に復元できますが,オブジェクトの型は複雑になるので,けっこう面倒くさいんじゃないかと.まあ,ここら辺はやってみないとわからない面がありますが.

一方,Probe Objectはというと,型エラーの検出としては弱いけれども,型宣言の省略による情報の欠落に対しては,有効に働きそうだと思います.それに,Rubyなら実装がえらい簡単なのも素晴らしいですね.

今までで一番感動した,Rubyプログラムです.

*1:って言えるほどRubyに詳しくありませんが