code: def merge(cls, ts_list, compact=True, operation=None):
          
          # If operation is not given then the default is the list
          # of defaults of all time series
          # If operation is given, then the default is the result of
          # the operation over the list of all defaults
          default = [ts.default for ts in ts_list]
          if operation:
              default = operation(default)
  
          result = cls(default=default)
          for t, merged in cls.iter_merge(ts_list):
              if operation is None:
                  value = merged
              else:
                  value = operation(merged)
              result.set(t, value, compact=compact)
          return result
docs: Iterate through several time series in order, yielding (time,
          `value`) where `value` is the either the list of each
          individual TimeSeries in the list at time t (in the same order
          as in ts_list) or the result of the optional `operation` on
          that list of values.