class Spruz::Generator

def recurse(tuple = [ nil ] * @n, i = 0, &block)

def recurse(tuple = [ nil ] * @n, i = 0, &block)
  if i < @n - 1 then
    @enums[i].__send__(@iterators[i]) do |x|
      tuple[i] = x
      recurse(tuple, i + 1, &block)
    end
  else
    @enums[i].__send__(@iterators[i]) do |x|
      tuple[i] = x
      yield tuple.dup
    end
  end
end