2013/10/1 sawa (Tsuyoshi Sawada) <sawadatsuyoshi / gmail.com>:
> Feature #8970: Array.zip and Array.product
> https://bugs.ruby-lang.org/issues/8970

> Most of the time when I use `Array#zip` or `Array#product`, I feel cumbursome that I have to take out the first array and pass it as a receiver. For example, if I have
>
>     a = [[:a, :b, :c], [:d, :e, :f], [:g, :h, :i]]
>
> I have to do something like this:
>
>     a.first.zip(*a.drop(1)){...}
>     a.first.product(*a.drop(1)){...}
>
> Sometimes, the receiver (i.e., the first array) has significance, but most other times, that breaks asymmetry, making the code look ugly.
>
> I would be happy if we had `Array.zip` and `Array.product` in addition so that we can do it like this:
>
>     Array.zip(*a){...}
>     Array.product(*a){...}

How different with Array#transpose ?

% ruby -e '
a =  [[:a, :b, :c], [:d, :e, :f], [:g, :h, :i]]
p a.first.zip(*a.drop(1))
p a.transpose
'
[[:a, :d, :g], [:b, :e, :h], [:c, :f, :i]]
[[:a, :d, :g], [:b, :e, :h], [:c, :f, :i]]
-- 
Tanaka Akira