code: def dot(matrix, vector):
      
      matrix_weld_type = None
      vector_weld_type = None
  
      if isinstance(matrix, LazyOpResult):
          matrix_weld_type = matrix.weld_type
          matrix = matrix.expr
      elif isinstance(matrix, np.ndarray):
          matrix_weld_type = numpy_weld_impl.numpy_to_weld_type_mapping[
              str(matrix.dtype)]
  
      if isinstance(vector, LazyOpResult):
          vector_weld_type = vector.weld_type
          vector = vector.expr
      elif isinstance(vector, np.ndarray):
          vector_weld_type = numpy_weld_impl.numpy_to_weld_type_mapping[
              str(vector.dtype)]
  
      return NumpyArrayWeld(
          numpy_weld_impl.dot(
              matrix,
              vector,
              matrix_weld_type,
              vector_weld_type),
          WeldDouble())
docs: Computes the dot product between a matrix and a vector.
      TODO: Make this more generic
  
      Args:
          matrix (TYPE): Description
          vector (TYPE): Description