[Removed the intermediate "computeMatchings" function
tobias@goedderz.info**20150311144610
 Ignore-this: 13db8345d14d522d42510f25961b5a4b
 
 The branch-and-bound implementation of bestMatchings never returns an empty list
 unless there are no matchings at all, therefore the fallback to allMatchings was
 a noop.
] hunk ./src/Igor2/RuleDevelopment/Matching.hs 98
-                        eitherMatchings <- applyC $ computeMatchings context m
-                        case eitherMatchings of
-                            Left errmsg     -> error $ "Unexpected error in computeMatchings: " ++ errmsg
-                            Right matchings -> mapM (mkIndirectCall cr n) $ matchings
+                        let matchings = bestMatchings context m
+                        mapM (mkIndirectCall cr n) matchings
hunk ./src/Igor2/RuleDevelopment/Matching.hs 108
--- Switch between allMatchings and bestMatchings
-computeMatchings :: Context -> [[(Ordering, [Rule])]] -> C MatchingErrorMonad [(Ordering, [[Rule]])]
-computeMatchings context ioMatrix =
-    let cam = allMatchings ioMatrix
-        bm = bestMatchings context ioMatrix
-    in if null bm
-          then cam
-          else return bm
-
hunk ./src/Igor2/RuleDevelopment/Matching.hs 112
-
-    TODO: An exception in MatchingErrorMonad should never happen here.
-    Therefore, remove "C MatchingErrorMonad" from the return type and throw an
-    error if it does.
hunk ./src/Igor2/RuleDevelopment/Matching.hs 113
-allMatchings :: [[(Ordering, [Rule])]] -> C MatchingErrorMonad [(Ordering, [[Rule]])]
-allMatchings = return . (map (\ios -> (maximum $ map fst ios, transpose $ map snd ios))) . sequence
+allMatchings :: [[(Ordering, [Rule])]] -> [(Ordering, [[Rule]])]
+allMatchings = map (\ios -> (maximum $ map fst ios, transpose $ map snd ios)) . sequence
hunk ./src/Igor2/RuleDevelopment/Matching.hs 116
+{-| Works like 'allMatchings', but returns only values of '(Ordering, [[Rule]])'
+    with a maximum number of closed lggs (of the inner '[Rule]'s).
+-}