Let pprint() support sets and frozensets (suggested by David Mertz).
diff --git a/Lib/pprint.py b/Lib/pprint.py
index 89f99d2..9359de3 100644
--- a/Lib/pprint.py
+++ b/Lib/pprint.py
@@ -162,11 +162,24 @@
             write('}')
             return
 
-        if (issubclass(typ, list) and r is list.__repr__) or \
-           (issubclass(typ, tuple) and r is tuple.__repr__):
+        if ((issubclass(typ, list) and r is list.__repr__) or
+            (issubclass(typ, tuple) and r is tuple.__repr__) or
+            (issubclass(typ, set) and r is set.__repr__) or
+            (issubclass(typ, frozenset) and r is frozenset.__repr__)
+           ):
             if issubclass(typ, list):
                 write('[')
                 endchar = ']'
+            elif issubclass(typ, set):
+                write('set([')
+                endchar = '])'
+                object = sorted(object)
+                indent += 4
+            elif issubclass(typ, frozenset):
+                write('frozenset([')
+                endchar = '])'
+                object = sorted(object)
+                indent += 9
             else:
                 write('(')
                 endchar = ')'