[#8168] {literal}#[]= — EGUCHI Osamu <eguchi@...>

えぐち@エスアンドイーです。

16 messages 1999/11/01
[#8172] Re: {literal}#[]= — matz@... (Yukihiro Matsumoto) 1999/11/01

まつもと ゆきひろです

[#8176] Multiple self assignment — Kazuhiro Yoshida <moriq.kazuhiro@...>

もりきゅうです。

35 messages 1999/11/01
[#8178] Re: Multiple self assignment — matz@... (Yukihiro Matsumoto) 1999/11/01

まつもと ゆきひろです

[#8212] Re: Multiple self assignment — Kazuhiro Yoshida <moriq.kazuhiro@...> 1999/11/02

もりきゅうです。

[#8213] Re: Multiple self assignment — matz@... (Yukihiro Matsumoto) 1999/11/03

まつもと ゆきひろです

[#8232] 例外を処理する 2 項演算子 — Kazunori NISHI <kazunori@...> 1999/11/05

西@九大です。

[#8233] Re: 例外を処理する 2 項演算子 — matz@... (Yukihiro Matsumoto) 1999/11/05

まつもと ゆきひろです

[#8236] Re: 例外を処理する 2 項演算子 — Kazuhiro Yoshida <moriq.kazuhiro@...> 1999/11/05

もりきゅうです。

[#8266] Re: 例外を処理する 2 項演算子 — EGUCHI Osamu <eguchi@...> 1999/11/07

えぐち@エスアンドイー です。

[#8269] Re: 例外を処理する 2 項演算子 — gotoken@... (GOTO Kentaro) 1999/11/07

In message "[ruby-dev:8266] Re: 例外を処理する 2 項演算子"

[#8271] Re: 例外を処理する 2 項演算子 — matz@... (Yukihiro Matsumoto) 1999/11/08

まつもと ゆきひろです

[#8274] Re: 例外を処理する 2 項演算子 — keiju@... (石塚圭樹) 1999/11/08

けいじゅ@日本ラショナルソフトウェアです.

[#8204] Re: [ruby-list:18281] Re: アクセス制御について — Shugo Maeda <shugo@...>

前田です。

12 messages 1999/11/02
[#8205] Re: [ruby-list:18281] Re: アクセス制御について — Shin-ichiro Hara <sinara@...> 1999/11/02

原です。

[#8315] Re: [ruby-list:18601] Re: [REQ] [].grep(pat){} ==> [].grep(pat).collect{} — Kazunori NISHI <kazunori@...>

西@九大です。

37 messages 1999/11/15
[#8316] Re: [ruby-list:18601] Re: [REQ] [].grep(pat){} ==> [].grep(pat).collect{} — matz@... (Yukihiro Matsumoto) 1999/11/15

まつもと ゆきひろです

[#8369] Re: [REQ] [].grep(pat){} ==> [].grep(pat).collect{} — Koji Arai <JCA02266@...> 1999/11/18

新井です。

[#8374] Re: [REQ] [].grep(pat){} ==> [].grep(pat).collect{} — matz@... (Yukihiro Matsumoto) 1999/11/18

まつもと ゆきひろです

[#8384] Re: [REQ] [].grep(pat){} ==> [].grep(pat).collect{} — Koji Arai <JCA02266@...> 1999/11/19

新井です。

[#8405] 1.4.3 (Re: Re: [REQ] [].grep(pat){} ==> [].grep(pat).collect{}) — matz@... (Yukihiro Matsumoto) 1999/11/24

[#8319] Re: Exception handling — Jun Adachi <adachi@...>

安達@沖データと申します。

21 messages 1999/11/16
[#8350] Re: Exception handling — Kazunori NISHI <kazunori@...> 1999/11/17

西@九大です。

[#8446] [REQ] {enumerable, integer, range}.rand — Kazunori NISHI <kazunori@...>

西@九大です。

37 messages 1999/11/29
[#8449] Re: [REQ] {enumerable, integer, range}.rand — matz@... (Yukihiro Matsumoto) 1999/11/30

まつもと ゆきひろです

[#8463] Re: [REQ] {enumerable, integer, range}.rand — Kazunori NISHI <kazunori@...> 1999/11/30

西@九大です。

[#8474] Re: [REQ] {enumerable, integer, range}.rand — matz@... (Yukihiro Matsumoto) 1999/12/01

まつもと ゆきひろです

[#8476] Re: [REQ] {enumerable, integer, range}.rand — Kazunori NISHI <kazunori@...> 1999/12/01

西@九大です。

[#8487] Re: [REQ] {enumerable, integer, range}.rand — matz@... (Yukihiro Matsumoto) 1999/12/02

まつもと ゆきひろです

[#8494] Re: [REQ] {enumerable, integer, range}.rand — Kazunori NISHI <kazunori@...> 1999/12/02

西@九大です。

[#8451] new Hash (Re: [ruby-list:19043]) — Wakou Aoyama <wakou@...>

青山です。

18 messages 1999/11/30

[ruby-dev:8262] Enumerable, Comparable (Re: [ruby-list:18468] Re: Array doesn't include Comparable)

From: Yasuhiro Fukuma <yasuf@...>
Date: 1999-11-06 22:45:42 UTC
List: ruby-dev #8262
福間@福岡 です。

記事 <19991107060131Y.ttate@jaist.ac.jp> にて、
ttate@jaist.ac.jp さんは書きました:

> やっぱり(?)Enumerable#<=> があるのは何か変な気がしますし、メソッドと
> モジュール名を見た時にEnumerableとComparableの違いがなんかすっきりし
> ないです。

Enumerable#<=> というメソッドは無いと思いますが、それはおいといて。

> Enumerableはeachをもとにしたメソッドのみを対象にすべきではないかと思
> います。で、Comparableは<=>をもとにしたメソッドのみで構成する方が使う
> ときにも単純ではないでしょうか?
> 
> 具体的にはEnumerable#max,min,sortはComparableへ移った方がいいような気
> がします。で、Enumerable#first,lastがあると良いかなぁと、、、

例えば数(Numeric)は大小を比較できます(Comparable)が、
Comparable#max というメソッドがあったとして、

  1.max

は「最大」のなにを返すのでしょう?


Enumerable は

  その「モノ」の構成要素を列挙することができる

# 「列挙」の方法は each というメソッドで定義する。

という性質であって、

  その「モノ」を、他の「モノ」といっしょに集めて列挙することができる

ではありません。一方 Comparable は

  その「モノ」と、他の「モノ」との「大小」を比較することができる

# 「大小」の意味は <=> というメソッドで定義する。

という性質であって、

  その「モノ」の或る構成要素と、他の構成要素との「大小」を比較することが
  できる

ではありません。


Enumerable#max などは

  その構成要素の全てがComparableであるEnumerableなモノ

に対して(本当はちょっと違うけど)使うことができるメソッドです。例えば

  - 「(有限)集合」は、その構成要素を列挙することができる(Enumerable)
  - 「整数」は、他の「整数」と「大小」を比較することができる(Comparable)

ですから、「整数の集合」から

  - その構成要素のうち「最大」のモノを得る(max)
  - その構成要素を「小さい」ほうから順に並べた配列を得る(sort)

といったことができます。

「色の集合: {赤, 青, 緑, 白}」は、(このように)その構成要素を列挙する
ことができますが、この中から「最大のモノ」を得ることは(一般的には)
できません。なぜなら、この集合の構成要素である「色」は、「大小」を
比較できるモノではないからです。

# で、配列というのが「大小」を比較できるモノなのかどうかは、…難しい
# 問題なのでパス(^^;

---
 Yasuhiro Fukuma (福間 康弘) as Yasu.F @ Kitakyushu.Fukuoka.Japan
 Web site: http://www8.big.or.jp/~yasuf/
 PGP fingerprint = 17 25 8A F3 99 E5 7E 19  C0 EA 6E 03 8A C3 CE F0
 “I hate AMERIKA-JIN.”

In This Thread