code: def fold_left(self, zero_value, func):
          
          result = zero_value
          for element in self:
              result = func(result, element)
          return _wrap(result)
docs: Assuming that the sequence elements are of type A, folds from left to right starting with
          the seed value given by zero_value (of type A) using a function of type
          func(current: B, next: A) => B. current represents the folded value so far and next is the
          next element from the sequence to fold into current.
  
          >>> seq('a', 'b', 'c').fold_left(['start'], lambda current, next: current + [next]))
          ['start', 'a', 'b', 'c']
  
          :param zero_value: zero value to reduce into
          :param func: Two parameter function as described by function docs
          :return: value from folding values with func into zero_value from left to right.