# File lib/core/facets/enumerable/accumulate.rb, line 42
  def accumulate(iterations=1)
    return self if iterations == 0

    Functor.new do |op, *args|
      result = []
      each { |x| result << x.send(op, *args) }
      result.flatten.uniq.accumulate(iterations - 1)
    end
  end