[use newId to generate unique ids rather than using local functions
John Meacham <john@repetae.net>**20080220054608] hunk ./E/Annotate.hs 142
-    | isInvalidId i || i `mmember` ss = nv (fromList [ (x,undefined) | x <- xs ] `mappend` ss)
+    | isInvalidId i || i `mmember` ss  = newId (size ss) isOkay
hunk ./E/Annotate.hs 144
+    where isOkay i = (i `mnotMember` ss) && (i `notElem` xs)
hunk ./E/Annotate.hs 147
-nv ss = v (2 * (size ss + 1)) where
-    v n | n `mmember` ss = v (n + 2)
-    v n = n
-
-nv' ss = v (2 * (size ss + 1)) where
-    v n | (Just Nothing) <- mlookup n ss = v (n + 2)
-    v n = n
hunk ./E/Subst.hs 30
-import System.Random
hunk ./E/Subst.hs 155
+mnv :: Bool -> Set.Set Id -> Id -> Set.Set Id -> IdMap a -> Id
hunk ./E/Subst.hs 157
-    | allShadow = nv scheck (Set.size xs + Set.size s + size ss)
-    | isInvalidId i || scheck i = nv check (Set.size xs + Set.size s + size ss)
+    | allShadow = newId (Set.size xs + Set.size s + size ss) scheck
+    | isInvalidId i || not (scheck i) = newId (Set.size xs + Set.size s + size ss) check
hunk ./E/Subst.hs 161
-    where scheck n = n `mmember` ss || n `Set.member` s
-          check n = scheck n || n `Set.member` xs
-
-nv check seed = head $ filter (not . check) $ filter even $ filter (>0) ls
-    where ls  = randoms (mkStdGen seed)
-
-nv' ss = v (2 * (size ss + 1)) where
-    v n | (Just Nothing) <- mlookup n ss = v (n + 2)
-    v n = n
+    where scheck n = n `mnotMember` ss && n `notMember` s
+          check n = scheck n && n `notMember` xs