code: def reduce(self, start=0, end=None):
          
          if end is None:
              end = self._capacity - 1
          if end < 0:
              end += self._capacity
          return self._reduce_helper(start, end, 1, 0, self._capacity - 1)
docs: Returns result of applying `self.operation`
          to a contiguous subsequence of the array.
  
            self.operation(
                arr[start], operation(arr[start+1], operation(... arr[end])))
  
          Parameters
          ----------
          start: int
            beginning of the subsequence
          end: int
            end of the subsequences
  
          Returns
          -------
          reduced: obj
            result of reducing self.operation over the specified range of array
            elements.