logo       

[ruby-list:43041] nil と unknown: msg#00026

lang.ruby.japanese

Subject: [ruby-list:43041] nil と unknown

たけ(tk)です。

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

> 「論理的」には「値がある」を否定したとき、
> 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




<Prev in Thread] Current Thread [Next in Thread>
Google Custom Search

News | FAQ | advertise