From: Kenta Murata Date: 2011-08-01T23:34:28+09:00 Subject: [ruby-dev:44312] [Ruby 1.9 - Feature #5133] Array#unzip as an alias of Array#transpose Issue #5133 has been updated by Kenta Murata. 「zip が transpose の逆になっているか」 を確認せず投稿したことがバレてしまいましたね。 私が欲しかったのは unzip のような zip の逆っぽいイメージの名前が付いている、 zip する前の配列のセットが返ってくるメソッドです。 きしもとさんの > transpose は自己双対で、zip と双対というわけでもないので、 > エイリアスには反対、かなぁ。 という意見については、確かにその通りだと思いましたので、 エイリアスではない方法で導入できるなら嬉しいです。 ---------------------------------------- Feature #5133: Array#unzip as an alias of Array#transpose http://redmine.ruby-lang.org/issues/5133 Author: Kenta Murata Status: Open Priority: Normal Assignee: Yukihiro Matsumoto Category: core Target version: 1.9.x Array#zip の逆は Array#transpose なんですけど、 この対応関係が非常に分かり難いなと思いました。 Haskell には zip の逆をやる関数として unzip が用意されています。 unzip という名前は、「zip の逆をやりたい」と思ったときに (transpose よりは) 思い付きやすい名前だと思います。 ということで Array#unzip を Array#transpose のエイリアスとして 導入してはどうでしょう? 以下パッチです: diff --git a/array.c b/array.c index 8caad66..dc411b7 100644 --- a/array.c +++ b/array.c @@ -4720,6 +4720,7 @@ Init_Array(void) rb_define_method(rb_cArray, "reject!", rb_ary_reject_bang, 0); rb_define_method(rb_cArray, "zip", rb_ary_zip, -1); rb_define_method(rb_cArray, "transpose", rb_ary_transpose, 0); + rb_define_alias(rb_cArray, "unzip", "transpose"); rb_define_method(rb_cArray, "replace", rb_ary_replace, 1); rb_define_method(rb_cArray, "clear", rb_ary_clear, 0); rb_define_method(rb_cArray, "fill", rb_ary_fill, -1); -- http://redmine.ruby-lang.org