[#8257] Re: Smalltalk [Re: design patterns] — 助田 雅紀 <masaki.suketa@...>

助田です。

11 messages 1998/06/09
[#8259] Re: Smalltalk [Re: design patterns] — KIMURA Koichi <kkimura@...> 1998/06/10

[#8262] TkGrid do not exist? — Hiramatu Yoshifumi <hiramatu@...>

平松です。

26 messages 1998/06/10
[#8266] Re: TkGrid do not exist? — matz@... (Yukihiro Matsumoto) 1998/06/10

まつもと ゆきひろです

[#8269] Re: TkGrid do not exist? — NAGAI Hidetoshi <nagai@...> 1998/06/10

永井@知能.九工大です.

[#8271] Re: TkGrid do not exist? — NAGAI Hidetoshi <nagai@...> 1998/06/10

永井@知能.九工大です.

[#8375] new MethodIndex — keiju@... (Keiju ISHITSUKA)

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

21 messages 1998/06/16
[#8447] new MethodIndex — TEI meiki <tei@...> 1998/06/20

こんにちは、鄭です。

[#8448] new MethodIndex — TEI meiki <tei@...> 1998/06/20

再び、鄭です。_o_

[#8418] how to use delegate — gotoken@... (GOTO Kentaro)

ごとけんです

18 messages 1998/06/18
[#8419] Re: how to use delegate — matz@... (Yukihiro Matsumoto) 1998/06/19

まつもと ゆきひろです

[#8420] Re: how to use delegate — gotoken@... (GOTO Kentaro) 1998/06/19

ごとけんです

[#8421] Re: how to use delegate — matz@... (Yukihiro Matsumoto) 1998/06/19

まつもと ゆきひろです

[#8521] hash sort — "Kazuhiro Yoshida" <s95l980@...>

もりきゅうです。

34 messages 1998/06/26
[#8523] hash sort — gotoken@... (GOTO Kentaro) 1998/06/26

ごとけんです

[#8533] Re: hash sort — WATANABE Hirofumi <watanabe@...> 1998/06/26

わたなべです.

[#8534] Re: hash sort — gotoken@... (GOTO Kentaro) 1998/06/26

ごとけんです

[#8536] Re: hash sort — Sinichiro Dezawa <dezawa@...> 1998/06/26

出沢です

[#8538] Re: hash sort — gotoken@... (GOTO Kentaro) 1998/06/26

ごとけんです

[#8539] Re: hash sort — TAKAHASHI Masayoshi <maki@...> 1998/06/26

高橋です。

[#8541] Re: hash sort — gotoken@... (GOTO Kentaro) 1998/06/26

ごとけんです

[#8546] Re: hash sort — Tadayoshi Funaba <tadf@...> 1998/06/26

ふなばです。

[ruby-list:8568] Re: hash sort

From: gotoken@... (GOTO Kentaro)
Date: 1998-06-28 14:36:04 UTC
List: ruby-list #8568
ごとけんです

いやぁ、ふなばさんの Enumerable に対する理解が鋭いので
なんかあせって前のメールは難しそうに書いてしまいました ^^;

In message "[ruby-list:8561] Re: hash sort"
    on 98/06/27, Tadayoshi Funaba <tadf@kt.rim.or.jp> writes:

>ふなばです。

>>現実の要請によって仕方なく sort してしまうけど、枚挙はできても
>>本来 sort に馴染まないモノがままあることが Array#<=> への思考を
>>阻害しているという考察です。
>
>で、このあたりをもうちょっと具体的に聞いてみたいです。

えっと、割とよく会う状況は、ハッシュを要素とする配列で、
ハッシュのキーに対応した値を使ってソートするのだけど、
キーの優先順位だけでは順序を指定できない場合が該当します。
例えば(ちょっとややこしいですが)、

ary.sort!{|e0,e1|
  if e0[k0] > C && e1[k0] > C
    e0[k1] <=> e1[k1]
  elsif e0[k0] > C
    1
  else
    e0[k2] <=> e1[k2]
  end
}

のような場合です。キーの優先順位が他のキーに対応する
値によって変るわけです。

似たようなケースとして、tree なんかは便宜的に
 Enumerable にすることがあるけど、leaf かどうかに
よってソートの基準を変えるという場合もあります。
つまり nonzero? を使う/使わないという問題とは関係なく
Array#<=> は辞書式のような階層的順序が仮定されてるので、
そーゆー階層を導入しにくい場合ですね。

さらに上の例だと最終的に何らかの <=> で解決してますが、
<=> を実装してない場合は nonzero? を使ってその場限りの
<=> をブロックに書き込むのは理にかなってると思います。
てゆーか、array.c をみたけど Array#<=> の実装自体が
まさに nonzero? 相当のことをやってるわけだし。

上の考察の結論としては既存の <=> の(静的な)階層で
済むときは Array#<=> を積極的に使おうという事ですね。
なるほどー

# いや、こんなに議論始めるつもりはなかったんです。
# つき合ってくれてどうもです。

-- gotoken

In This Thread