Along the lines of +=...

module Enumerable
  def method_missing(meth, *args, &block)
    if meth.to_s =~ /_with_index/
      m = meth.to_s.gsub('_with_index','')
      i = -1
      self.send(m,*args) {|n|
        i += 1
        block.call(n,i)
      }
    end
  end

  def myeach(*args, &block)
    each(*args, &block)
  end
end

a = (10..20).to_a
b = a.map_with_index {|n,i| n+i}
p b

a.myeach {|n| p n}
a.myeach_with_index {|n,i| p [n,i]}

Drawback is, of course, that this might clash with someone else's
definition of method_missing.

martin