rutoの日記: Rubyはnilを濫用できるのでnil.to_sの仕様変更が問題になる。Null値をデフォルトでは許さない言語もあるよ。
日記 by
ruto
ruby-dev メーリングリストで行なわれている、nil.to_sを""にするべきか、"nil"にするべきかの議論について。
nil(やnull)をどこでも使える言語は大変だな、と思った。
堅苦しいことを言うと""が本当に必要なら""を使えばいい。
そこをnilで代用した上にnil.to_sの結果に依存したプログラムを書いてしまうから変なことになる。
#そんな堅苦しいRubyはいやだけど。
他にもnilやnullを濫用してしまうとぬるぽが起きるし、nilやnullにエラーやその他特別な意味を与えると拡張できないしで、nilやnullというのはあるのが当たり前な普遍的なものという訳ではない。
Haskellにはnilやnullは無くて、そのようなものを使いたい場合は明示的に特別な型でラップしてやらなければならない。
つまり、String型はnilにならない文字列を表して、Maybe Stringはnilになりうる文字列を表す。
こうすることによって、nilの濫用が避けられる。逆に、他の言語だとnilやnullを使って簡単に表せることがちょっとだけめんどうになることもある。
他の言語を見ても、nullになりうる型とnullにならない型を区別する言語もある。
Niceとか、最近のだとSpec#もそうらしい。
#他にもたくさんあった気がするけど思い出せない……。
Rubyはnilを濫用できるのでnil.to_sの仕様変更が問題になる。Null値をデフォルトでは許さない言語もあるよ。 More ログイン