# File lib/facet/array/combinations.rb, line 43
  def each_combination(k=2)
    n = self.size 
    return unless (1..n) === k
    idx = (0...k).to_a
    loop do
      yield self.values_at(*idx)
      i = k - 1
      i -= 1 while idx[i] == n - k + i
      break if i < 0
      idx[i] += 1
      (i + 1 ... k).each {|j| idx[j] = idx[i] + j - i}
    end
  end