rubyではなぜnil.to_iがゼロを返すのか?

先日始まったオライリーRubyブログにでていたエントリ。
Is this A Good Thing or not? - O'Reilly Ruby
Rubyでは,nilとfalseが「偽」であり,それ以外は「真」と扱われる。perlでは空文字列や0も偽になる。0はC系の言語でも偽である。このへんは最初はとまどいますね。rubynilとfalseだけを偽にしたのは,ブーリアン値もオブジェクトとして扱うからかなあ? 0とか空文字列はIntegerやStringのインスタンスであって,NilCalssのインスタンスではないと。うーん,いまいち説得力がない。
あ,このエントリでは問題はそこじゃなくて,nil.to_iは偽にならない0ではなく,nilを返すか,例外を投げるのがいいんじゃないかと書いてます。false.to_iは例外を投げるんですよね。

irb(main):001:0> nil.to_i
=> 0
irb(main):002:0> "".to_i
=> 0
irb(main):003:0> false.to_i
NoMethodError: undefined method `to_i' for false:FalseClass
        from (irb):3
irb(main):004:0> true.to_i
NoMethodError: undefined method `to_i' for true:TrueClass
        from (irb):4