code: def traverse(f, t):
      """
      Map `f` over `t`, calling `f` with type `t` and the map result of the
      mapping `f` over `t` 's parameters.
  
      Parameters
      ----------
      f : callable
      t : DataShape
  
      Returns
      -------
      DataShape
      """
      if isinstance(t, T.Mono) and not isinstance(t, T.Unit):
          return f(t, [traverse(f, p) for p in t.parameters])
      return t
  
label_desc: Use image node_id 1 for calling a global function with example usage: traverse(f, t) and returns: t, f