docs: def auto_dict(ival=None, miss=None):
      '''
      auto_dict() yields an auto-dict that vivifies value of {} on miss.
      auto_dict(ival) uses the given dict ival as an initializer.
      auto_dict(ival, miss) uses the given miss function.
      auto_dict(None, miss) is equivalent to auto_dict() with the given miss function.
  
      If the miss argument (also a named parameter, miss) is an empty list, an empty dict, or an
      empty set, then the miss is taken to be an anonymous lambda function that returns an empty
      item of the same type.
      '''
      if ival is None: d = AutoDict()
      else: d = AutoDict(ival)
      if miss == {} or miss is None: return d
      elif miss == []: d.on_miss = lambda:[]
      elif miss == set([]): d.on_miss = lambda:set([])
      else: d.on_miss = miss
      return d