[ruby-list:43041] nil と unknown

From: take_tk <ggb03124@...>
Date: 2006-12-12 12:49:25 UTC
List: ruby-list #43041
たけ(tk)です。

[ruby-list:43035] Re: 「何もない(nil)」+「何か(v)」→「何か(v)」 にて 
Masou <mas@masou.net> さん 曰く:

> 「論理的」には「値がある」を否定したとき、
> 1.「値がない」 empty
> 2.「値が不明」 unknown
> と2つの場合(それ以上は?)を一般的に考えます。
> 
> empty の場合は、take_tkさんの考え方でもいいかもしれませんが、
> unknown の場合は、「unknown」+「何か] = 「unknown」です。
> 
> 3値理論では、empty も unknown も nil として扱います。
> 4値理論では、一般的に empty と unknown とを区別します。

ありがとうございます。3値論理をいろいろ調べてみて、勉強になりました。

Ruby の nil は3値論理の unknown でもなくて(※)、多義的で性格が曖昧も
しくは一定していないということですね。(実用的とも言う)。

※ http://www.geocities.jp/mickindex/database/db_3vl.html
によると !unknown → unknown だが Ruby では !nil → nil ではない。

考えてみれば、Rubyでは「失敗」の意味でnilを使うことも多い。メソッドが普
通は数値を返すが、失敗したときに、例外を生成するほどでもないときに、nil
を返すというようなものがある。そのような場合には、戻り値(nil)+1 などは失
敗したほうがよいですね。つまり、NilClass#+ は未定義のほうがよい。

take_tk = kumagai hidetake

In This Thread

Prev Next