皆さん初めまして、Kent.Nと申します。

面白そうな話なのでぜひ混ぜて下さい :-)

On Wed, 8 Jun 2005 20:47:37 +0900
SAITO Shukaku <shukaku / j-mac.co.jp> wrote:

> nilかfalseのどちらか1つだけでも言語としては困らないのかも知れませんが、
> 値の意味合いとしては現在のように両方ある方が、個人的には好きです。false
> は文字通り真偽の"偽"として、nilは"該当値なし"として、例え条件式での扱い
> が同じであっても、表記上の意図を示せる方が良いなぁと思います。

nilの使い道で一番多いのは
「値があるならそれを、なければnilを返せ」
というパターンだと思います。
で、そういうケースでは、返ってくる可能性のある値は
あるカテゴリに収まっているケースがほとんどですよね。

仮にnilが存在しなかった場合、この手のコードは
「値があるならそれを、なければ値のカテゴリに属さない
何かを返せ」
のように作ることになると思います。
#それか、「値があるかどうか」と「値を返せ」を
#別々に用意して、いざという時は例外飛ばすか

しかしそうすると、返却された値をチェックする際に、
その値がどんなカテゴリに属しているのかをいちいち
考えなきゃいけなくて、とても面倒です。

そんなときに、いつでも何処でも「どのカテゴリにも属さない値」
が用意されていれば、何も考えずにそれを使うことができます。
その為のnilなんじゃないかと。

あと、falseは、値のカテゴリが「真偽値」の場合には
有効な値になり得ますから、nilの代わりにはなりません。

他に、nilがないとコンテナに対するジェネリックな
処理を書きづらいんじゃないかなあ…
…とか思うのは根がC++ユーザだからかも知れません(^^;

-- 
Kent.N <kentn / m4.dion.ne.jp>