[#43857] Hashへの生成順は保障されないのか? — Hiroshi Kasamatsu <qqmn89yb9@...>

こんにちは、笠松と申します。

88 messages 2007/08/18
[#43858] Re: Hashへの生成順は保障されないのか? — Urabe Shyouhei <shyouhei@...> 2007/08/18

Hiroshi Kasamatsu wrote:

[#43862] Re: Hashへの生成順は保障されないのか? — Hiroshi Kasamatsu <qqmn89yb9@...> 2007/08/19

皆さん、早速のレスありがとうございます。

[#43863] Re: Hashへの生成順は保障されないのか? — Urabe Shyouhei <shyouhei@...> 2007/08/19

Hiroshi Kasamatsu wrote:

[#43870] Re: Hashへの生成順は保障されないのか? — Hiroshi Kasamatsu <qqmn89yb9@...> 2007/08/20

Urabeさん、笠松です。レスありがとうございます。

[#43872] Re: Hashへの生成順は保障されないのか? — Urabe Shyouhei <shyouhei@...> 2007/08/20

Hiroshi Kasamatsu wrote:

[#43873] Re: Hashへの生成順は保障されないのか? — cuzic <cuzic@...> 2007/08/20

cuzic です。

[#43874] Re: Hashへの生成順は保障されないのか? — Urabe Shyouhei <shyouhei@...> 2007/08/20

cuzic wrote:

[#43875] Re: Hashへの生成順は保障されないのか? — Tanaka Akira <akr@...> 2007/08/20

In article <46C9E7BB.4060100@ruby-lang.org>,

[#43876] Re: Hashへの生成順は保障されないのか? — Urabe Shyouhei <shyouhei@...> 2007/08/20

おお、田中さんを満足させる説明ってのは結構ハードル高そうだな。

[#43878] Re: Hashへの生成順は保障されないのか? — しん <dezawa@...> 2007/08/20

# 出遅れたので、レスすべきメールが判らなくなってしまったので、手近なのに

[#43879] Re: Hashへの生成順は保障されないのか? — Yukihiro Matsumoto <matz@...> 2007/08/20

まつもと ゆきひろです

[#43887] Re: Hashへの生成順は保障されないのか? — Nobuyoshi Nakada <nobu@...> 2007/08/21

なかだです。

[#43891] Re: Hashへの生成順は保障されないのか? — SASADA Koichi <ko1@...> 2007/08/21

 ささだです。

[#43892] Re: Hashへの生成順は保障されないのか? — Yukihiro Matsumoto <matz@...> 2007/08/21

まつもと ゆきひろです

[#43893] Re: Hashへの生成順は保障されないのか? — Nobuyoshi Nakada <nobu@...> 2007/08/21

なかだです。

[#43899] Re: Hashへの生成順は保障されないのか? — "Akinori MUSHA" <knu@...> 2007/08/21

At Tue, 21 Aug 2007 13:59:43 +0900,

[#43900] Re: Hashへの生成順は保障されないのか? — SASADA Koichi <ko1@...> 2007/08/21

 ささだです。

[#43906] Re: Hashへの生成順は保障されないのか? — "Akinori MUSHA" <knu@...> 2007/08/21

At Tue, 21 Aug 2007 19:29:11 +0900,

[#43921] Re: Hashへの生成順は保障されないのか? — Tanaka Akira <akr@...> 2007/08/22

In article <86sl6dgikh.knu@iDaemons.org>,

[#43926] Re: Hashへの生成順は保障されないのか? — Tanaka Akira <akr@...> 2007/08/23

In article <87zm0kaz60.fsf@fsij.org>,

[#43927] Re: Hashへの生成順は保障されないのか? — Yugui <yugui@...> 2007/08/24

Yuguiといいます。

[#43930] Re: Hashへの生成順は保障されないのか? — Yukihiro Matsumoto <matz@...> 2007/08/24

まつもと ゆきひろです

[ruby-list:43906] Re: Hashへの生成順は保障されないのか?

From: "Akinori MUSHA" <knu@...>
Date: 2007-08-21 12:47:52 UTC
List: ruby-list #43906
At Tue, 21 Aug 2007 19:29:11 +0900,
SASADA Koichi wrote:
> Akinori MUSHA wrote:
> >  1.9 においても、 Hash という名前のクラスで順序を保証することには
> > 反対です。別クラスにするか、せめて生成時オプションにしてほしい。
>
>  理由はなんでしょう。実装上たまたま順序が保障されているというのは良
> いでしょうか。それとも、これも混乱を招く(保障されてると思ってどんど
> んコードを書いちゃう人がいる)からダメでしょうか。

 そうですね。まとめになってしまいますが、

 1. 名実一致
    Hash というその名称から、順序性を期待させるべきでない。
    (この時点で大義がない)

 2. 性能
    メモリ使用量増加や速度低下をもたらし、今後の最適化の余地も
    制限する。

 3. 互換性
    記法が変わらないため、コード断片を見ただけでは順序性を期待
    しているのかどうか読み取れなくなる。これは他の言語や古い
    バージョンのRubyへの移植の妨げになる。

    また、 shim (compatibility layer)を実装しようにも、大幅な
    性能劣化を伴わずに実現できるか疑わしい。

などが理由です。

>  名前を変えるのは賛成なのですが、問題なのは多分リテラルで簡単に書け
> るかどうかってことだと思うのですよねぇ。

 リテラル表現を用意すると、バックポートしない限り下位互換性を
失いますが、それはさておき。

 [ x1 => y1, ... ] だと順序付きマップを生成するとか?これは今は
[{ x1 => y1, ... ]} と解釈されますが、文法的には配列と区別可能。

 Set もそろそろ組み込みに…。こちらはもちろん { x, y, z, w }。
わかりにくいか! (j/k)


 %m{ x1 => y1, ... } みたいなのもないことはないと思います。


 が、そもそもリテラル記法が必要なほど多用されるかどうか。

--
                     /
                    /__  __            Akinori.org / MUSHA.org
                   / )  )  ) )  /     FreeBSD.org / Ruby-lang.org
Akinori MUSHA aka / (_ /  ( (__(  @ iDaemons.org / and.or.jp

"Different eyes see different things,
    Different hearts beat on different strings --
       But there are times for you and me when all such things agree"

In This Thread