code: def aggr(array, op, initial_value, ty):
      
      weld_obj = WeldObject(encoder_, decoder_)
  
      array_var = weld_obj.update(array)
      if isinstance(array, WeldObject):
          array_var = array.obj_id
          weld_obj.dependencies[array_var] = array
  
      weld_template = """
        result(
          for(
            %(array)s,
            merger[%(ty)s,%(op)s],
            |b, i, e| merge(b, e)
          )
        )
      """
      weld_obj.weld_code = weld_template % {
          "array": array_var, "ty": ty, "op": op}
      return weld_obj
docs: Computes the aggregate of elements in the array.
  
      Args:
          array (WeldObject / Numpy.ndarray): Input array to aggregate
          op (str): Op string used to aggregate the array (+ / *)
          initial_value (int): Initial value for aggregation
          ty (WeldType): Type of each element in the input array
  
  
      Returns:
          A WeldObject representing this computation