class_docstr: An abstract visitor defined over Type.
  
  Defines the default dispatch over types.
docstr: Apply the visitor to a type.
code: def visit(self, typ):
      """Apply the visitor to a type."""
      if isinstance(typ, TypeVar):
          return self.visit_type_var(typ)
      elif isinstance(typ, IncompleteType):
          return self.visit_incomplete_type(typ)
      elif isinstance(typ, TensorType):
          return self.visit_tensor_type(typ)
      elif isinstance(typ, FuncType):
          return self.visit_func_type(typ)
      elif isinstance(typ, TupleType):
          return self.visit_tuple_type(typ)
      elif isinstance(typ, TypeRelation):
          return self.visit_type_relation(typ)
      elif isinstance(typ, RefType):
          return self.visit_ref_type(typ)
      elif isinstance(typ, GlobalTypeVar):
          return self.visit_global_type_var(typ)
      elif isinstance(typ, TypeCall):
          return self.visit_type_call(typ)
      elif isinstance(typ, TypeData):
          return self.visit_type_data(typ)
      else:
          raise Exception(f"unhandled case: {type(typ)}")
  
imports: from .ty import TypeVar, IncompleteType, TensorType, FuncType, TupleType, TypeRelation, RefType, GlobalTypeVar, TypeCall
  from .adt import TypeData
label_desc: Use image node_id 2 for calling the TypeFunctor obj's underlying member method code with example usage: obj.visit(typ) and returns: self, self, self, self, self, self, self, self, self, self