<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def aggr(array, op, initial_value, ty):
 """ 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 """

    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