[#19457] equality between "a" and Exception.new("a") — Tanaka Akira <akr@...17n.org>

ふと気がついたのですが、

39 messages 2003/02/02
[#19460] Re: equality between "a" and Exception.new("a") — matz@... (Yukihiro Matsumoto) 2003/02/03

まつもと ゆきひろです

[#19473] Re: equality between "a" and Exception.new("a") — Tanaka Akira <akr@...17n.org> 2003/02/04

In article <1044245817.592933.31973.nullmailer@picachu.netlab.jp>,

[#19474] Re: equality between "a" and Exception.new("a") — matz@... (Yukihiro Matsumoto) 2003/02/04

まつもと ゆきひろです

[#19475] Re: equality between "a" and Exception.new("a") — Tanaka Akira <akr@...17n.org> 2003/02/04

In article <1044329220.257740.28127.nullmailer@picachu.netlab.jp>,

[#19476] Re: equality between "a" and Exception.new("a") — matz@... (Yukihiro Matsumoto) 2003/02/04

まつもと ゆきひろです

[#19477] Re: equality between "a" and Exception.new("a") — Tanaka Akira <akr@...17n.org> 2003/02/04

In article <1044331431.138035.28173.nullmailer@picachu.netlab.jp>,

[#19478] Re: equality between "a" and Exception.new("a") — matz@... (Yukihiro Matsumoto) 2003/02/04

まつもと ゆきひろです

[#19479] Re: equality between "a" and Exception.new("a") — Tanaka Akira <akr@...17n.org> 2003/02/04

In article <1044332948.099873.28206.nullmailer@picachu.netlab.jp>,

[#19482] Re: equality between "a" and Exception.new("a") — matz@... (Yukihiro Matsumoto) 2003/02/04

まつもと ゆきひろです

[#19486] Re: equality between "a" and Exception.new("a") — Tanaka Akira <akr@...17n.org> 2003/02/04

In article <1044338964.502066.28474.nullmailer@picachu.netlab.jp>,

[#19491] Re: equality between "a" and Exception.new("a") — matz@... (Yukihiro Matsumoto) 2003/02/04

まつもと ゆきひろです

[#19493] Re: equality between "a" and Exception.new("a") — matz@... (Yukihiro Matsumoto) 2003/02/04

まつもと ゆきひろです

[#19556] compare between String and Exception — Tanaka Akira <akr@...17n.org> 2003/02/12

さらに気が付いたのですが、

[#19514] [Oniguruma] Version 1.7.1 — "K.Kosako" <kosako@...>

ftp.ruby-lang.orgに、onigd20030207.tar.gzを置きました。

19 messages 2003/02/07

[#19548] [PATCH] file.c for (PR#389) and (PR#390) — nobu.nakada@...

なかだです。

20 messages 2003/02/11
[#19572] Re: [PATCH] file.c for (PR#389) and (PR#390) — pegacorn@... 2003/02/14

From: nobu.nakada@nifty.ne.jp

[#19648] Re: SEGV at search_method in eval.c (PR#400) — nobu.nakada@...

なかだです。

13 messages 2003/02/24

[ruby-dev:19559] Re: compare between String and Exception

From: Tanaka Akira <akr@...17n.org>
Date: 2003-02-13 08:08:28 UTC
List: ruby-dev #19559
あー、言葉が足りなかったことに気がつきました。

In article <1045117653.309213.10735.nullmailer@picachu.netlab.jp>,
  matz@ruby-lang.org (Yukihiro Matsumoto) writes:

> |% ruby -e 's = "a"
> |e = Exception.new("b")
> |p s < e
> |p e > s
> |'
> |true
> |-e:4: undefined method `>' for #<Exception:0x401a7294> (NoMethodError)

私が問題にしているのは true のほうで、NoMethodError ではありません。

String と Exception には順序関係は存在しないと考えるのが自然だと思うの
で、<=> は nil か例外になるべきだという趣旨です。

というわけで、

> あと、現在、Comparableで定義されている比較演算子が比較が成立
> しない場合に偽を返すのは仕様のつもりです。この仕様が(対称性
> の観点から)妥当でないのではないかという議論は歓迎します。

というほうに対する反応はかなり適当だったのですが、もうすこし真面目に考
えました。

私としては、nil を推します。

プログラムが比較が成立しないという状況を扱うのは、半順序関係を持つ対象
を扱う時です。この場合、その対象には <=>, <, <=, >, >= は定義されてい
るはずで、定義されていない対象に対して呼び出してしまったらそれはおそら
くバグです。そういう観点にたつと、比較不能な時に Comparable が発生させ
る例外と NoMethodError をいっしょくたにして扱うのは意味がありません。
というかいっしょくたにして扱うとバグがどこかに紛れてしまいます。という
わけで、わざわざいっしょくたにして扱うことがやりやすいようにする変更を
行う意味は見出せません。

ま、NoMethodError を rescue するのを勧めるのはよろしくない、というだけ
の話ともいえます。

とはいえ、区別できるにこしたことはないので、nil がよいんじゃないだろう
か、というわけです。
-- 
[田中 哲][たなか あきら][Tanaka Akira]

In This Thread