Mike Hall wrote:

> 1. A new method, Array.combine  (needs a better name for general use).
>    It takes entries from two (or many) arrays and combines them.
>    (like a combination of Array.zip, fetch, and map)

Following on my suggestion that combine is just an extension of map, how 
do you feel about this code?:

class Array
     alias :__map :map
     def map *args, &block
         identity = proc{ |*items| items.length==1 ? items[0] : items }
         self.zip(*args).__map{ |line| (block or identity).call *line }
     end
     alias :collect :map
end


irb(main):003:0> [1,2,3].map
=> [1, 2, 3]
irb(main):004:0> [1,2,3].map [1,3,5]
=> [[1, 1], [2, 3], [3, 5]]
irb(main):005:0> [1,2,3].map([1,3,5]){|x,y|x*y}
=> [1, 6, 15]