From: Shin-ichiro HARA Date: 2002-11-08T12:50:36+09:00 Subject: [ruby-dev:18690] Re: Enumerable#zip 原です。 >まつもと ゆきひろです >|念のためあげておくと、(f) Array.zip という方法もなくはないですね。 >|Array.zip(a, b) と使う。 > >もちろんそれも考えたんですが、ここでの「Array」は役割があま >りないわりにでしゃばって邪魔な印象が強いのであまり好きではあ >りません。むしろ、zip単体でしょうが、いまさらKernelモジュー >ルの関数的メソッドを増やすのもなあ。 そうですね。 >|もしかすると、Enumerable#zip を作る前に、しばしば要望のある >|Enumerable#map_with_index を作るべきかもしれませんね。そう >|すると、zip は、a.map_with_index{|x, i| [x, b[i]]} で代用さ >|せればいいし、サイズ不揃い問題は解消する。 > >map_with_indexに強く反対するわけではないですが、zipの代わり >となるとやりたいことに対して直接的でないような気がします。 そうですね。で、私の主張は「zip みたいな高級なものを作るぐらいなら、ま ずもっと汎用性のある map_with_index を作るべきじゃないか」というもので す。だから選択肢としては、zip と map_with_index 両方を作るか、 map_with_index のみを作るか、両方作らないかのいずれかになる、と。 >|(1)Enumerable#map_with_index を作る。 >|(2)[a, b, c, ...].zip というタイプの Array#zip を作り、揃わないデ >| ータ列に対して例外をあげる。 > >うーん、前者は直接的でないし、後者はなんちゅーか表現として好 >きでないなあ。そろわないときには例外ってのは考慮の余地はある >案ですね。 後者が好きではないのは、「Array の各要素が Array であることを仮定する メソッドを Array に作り込むのが気持ち悪い」ということですかね。つまり、 そんなふうに「タイプ X 上の Array」に対する Array のメソッドを作って行っ たらきりがない、ということでしょうか? >|#zip って名前は適切なのかな? > >どうもPythonやMLなどの関数型言語では比較的よく見られる名前の >ようです。 そうなんですか、なんか投げやりな命名のような気がするなあ。:-)