From: "Hal E. Fulton" Date: 2002-12-05T12:03:29+09:00 Subject: Re: Enumerable#map_with_indices (was Re: Conditional block operations) ----- Original Message ----- From: To: "ruby-talk ML" Sent: Wednesday, December 04, 2002 8:47 PM Subject: Re: Enumerable#map_with_indices (was Re: Conditional block operations) > It was more a hint to Matz, though I think mwi is off the table :-) I'm not sure it's off the table forever... Matz did not seem opposed to it, just unconvinced. Here's an exchange from Nov 18 -- Matz is quoted, then (I guess) you, then me... > > > map_with_index was rejected just because no one proposed its typical > > > usage. YANGI principle applied. > > > > Hmmmm.... I'll try to think of some examples. It certainly seems to > > me to be at least as useful as each_with_index, potentially (i.e., if > > it existed :-) > > I'd go so far as to say that map_with_index > does for map exactly what each_with_index > does for each. > > I do find it useful. So I'd say (unless Matz says otherwise): Create a rationale for its existence and submit again. Here's a little contrived example of how I'd show the relationship between ewi and mwi. Problem: Take two arrays a and b, known to be the same size and contain numbers, and produce an array c which is the sum of the corresponding elements. Hmm, can't use a.each; must index into the other array. Need each_with_index. c = [] a.each_with_index {|x,i| c << x + b[i]} Now, same problem, but we want to modify a in-place rather than creating c. a.map_with_index! {|x,i| x + b[i]} And in fact, with mwi (non-bang) the first problem also can be solved: c = a.map_with_index {|x,i| x + b[i]} No doubt David or someone can come up with a more compelling example. Hal