On Nov 13, 8:11 pm, Wolfgang NáÅasi-Donner <ed.oda... / wonado.de> wrote: > A nicer version may be... > > class Array > def walker > l = self.length > if block_given? > l.times do |i| > yield self[0, i], self[i], self[i+1, l-i-1] > end > else > return Enumerable::Enumerator.new(self, :walker) > end > end > end Hmm... a.each_with_index do |el, i| pre, post = a[0,i], a[i+1..-1] ... end That's not too bad, so I'm not sure it's worth it (?) However, a few times I've wanted a nicer way to split the array at an index. Something like: a.each_with_index do |el, i| pre, post = *a.crack(i) ... end T.