def auto_dict(ival=None, miss=None):
if ival is None: d = AutoDict()<EOL>else: d = AutoDict(ival)<EOL>if miss == {} or miss is None: return d<EOL>elif miss == []: d.on_miss = lambda:[]<EOL>elif miss == set([]): d.on_miss = lambda:set([])<EOL>else: d.on_miss = miss<EOL>return d<EOL>
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.