@@ -49,16 +49,17 @@ generalize youngPool = do
49 -- otherwise generalize
49 -- otherwise generalize
50 let registerIfLowerRank var = do
50 let registerIfLowerRank var = do
51 isRedundant <- liftIO $ UF.redundant var
51 isRedundant <- liftIO $ UF.redundant var
52− if isRedundant then return () else do
52+ case isRedundant of
53 desc <- liftIO $ UF.descriptor var
55 desc <- liftIO $ UF.descriptor var
54− if rank desc < youngRank
56+ case rank desc < youngRank of
55− then TS.register var >> return ()
57+ True -> TS.register var >> return ()
56− else let flex' = if flex desc == Flexible then Rigid else flex desc
59+ let flex' = case flex desc of { Flexible -> Rigid ; other -> other }
57− in liftIO $ UF.setDescriptor var (desc { rank = noRank, flex = flex' })
60+ liftIO $ UF.setDescriptor var (desc { rank = noRank, flex = flex' })
59− mapM registerIfLowerRank (Map.findWithDefault [] youngRank rankDict)
62+ mapM_ registerIfLowerRank (Map.findWithDefault [] youngRank rankDict)
64-- adjust the ranks of variables such that ranks never increase as you
65-- adjust the ranks of variables such that ranks never increase as you