[quickcheck: simplify computation of free names
Helmut Grohne <grohne@cs.uni-bonn.de>**20150519090602
 Ignore-this: a2412662051b922e987542b42e05c2a5
] hunk ./src/Tests.hs 110
-        freeNames = St.evalState (freeNamesM prefix) (takenNames, 1)
+        freeNames = [ n | i <- [1..],
+                          let n = mkName (prefix ++ show i),
+                          S.notMember n takenNames ]
hunk ./src/Tests.hs 122
-nextNameM :: String -> St.State (S.Set Name, Int) Name
-nextNameM prefix = do
-    takenNames <- St.gets fst
-    (name, idx) <- St.gets (uncurry $ nextNameIdx prefix)
-    St.put (name `S.insert` takenNames, idx+1)
-    return name
-
-freeNamesM :: String -> St.State (S.Set Name, Int) [Name]
-freeNamesM prefix = do
-    name <- nextNameM prefix
-    names <- freeNamesM prefix
-    return $ name : names
-
-nextNameIdx :: String -> S.Set Name -> Int -> (Name, Int)
-nextNameIdx prefix takenNames firstIdx =
-    let idxToName idx = mkName $ prefix ++ show idx
-        isTaken nm = nm `S.member` takenNames
-    in head $ filter (not . isTaken . fst) $ map (\idx -> (idxToName idx, idx)) [firstIdx..]
-