on master help sign in
style tweaks
a3f62bdEvan Czaplicki
compiler/Type/Solve.hs+10−9
@@ -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+ True -> return ()
54+ False -> do
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 ()
58+ False -> do
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' })
58−
61+
59− mapM registerIfLowerRank (Map.findWithDefault [] youngRank rankDict)
62+ mapM_ registerIfLowerRank (Map.findWithDefault [] youngRank rankDict)
60−
61− return ()
62
63
63
64
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