on master help sign in
Allocate less in Type.Solve.adjustRankContent
commitf3a7c773dbe147fde39dd72ab49ac01dbbe5e90c authorEvan Czaplicki <evancz@users.noreply.github.com> dateThu 11 May 2017, 19:14 (9 years ago) parent2f6c8fc
1 file changed+4−2
src/Type/Solve.hs+4−2
src/Type/Solve.hs+4−2
@@ -131,7 +131,8 @@ adjustRankContent youngMark visitedMark groupRank content =
131131 return groupRank
132132
133133 Alias _ args realVar ->
134− maximum <$> mapM go (realVar : map snd args)
134+ do realRank <- go realVar
135+ foldM (\rank (_, argVar) -> max rank <$> go argVar) realRank args
135136
136137 Structure (App1 func arg) ->
137138 max <$> go func <*> go arg
@@ -143,7 +144,8 @@ adjustRankContent youngMark visitedMark groupRank content =
143144 return outermostRank
144145
145146 Structure (Record1 fields extension) ->
146− maximum <$> mapM go (extension : Map.elems fields)
147+ do extRank <- go extension
148+ foldM (\rank field -> max rank <$> go field) extRank fields
147149
148150
149151