on master help sign in
Do a bit less work in adjustRankHelp
commitae0c7e29558d52b9a50eb07120e6ab1054bd0708 authorEvan Czaplicki <evancz@users.noreply.github.com> dateThu 11 May 2017, 19:29 (9 years ago) parent3734eff
1 file changed+6−6
src/Type/Solve.hs+6−6
src/Type/Solve.hs+6−6
@@ -89,30 +89,30 @@ adjustRank youngMark visitedMark groupRank var =
8989
9090
9191adjustRankHelp :: Int -> Int -> Int -> Variable -> Descriptor -> TS.Solver Int
92−adjustRankHelp youngMark visitedMark groupRank var descriptor =
93− if _mark descriptor == youngMark then
92+adjustRankHelp youngMark visitedMark groupRank var descriptor@(Descriptor content rank mark _) =
93+ if mark == youngMark then
9494
9595 do -- Set the variable as marked first because it may be cyclic.
9696 liftIO $ UF.modifyDescriptor var $ \desc ->
9797 desc { _mark = visitedMark }
9898
9999 maxRank <-
100− adjustRankContent youngMark visitedMark groupRank (_content descriptor)
100+ adjustRankContent youngMark visitedMark groupRank content
101101
102102 liftIO $ UF.modifyDescriptor var $ \desc ->
103103 desc { _rank = maxRank }
104104
105105 return maxRank
106106
107− else if _mark descriptor /= visitedMark then
107+ else if mark /= visitedMark then
108108
109− do let minRank = min groupRank (_rank descriptor)
109+ do let minRank = min groupRank rank
110110 liftIO $ UF.setDescriptor var (descriptor { _mark = visitedMark, _rank = minRank })
111111 return minRank
112112
113113 else
114114
115− return (_rank descriptor)
115+ return rank
116116
117117
118118adjustRankContent :: Int -> Int -> Int -> Content -> TS.Solver Int