on master help sign in
Allocate less in Type.Solve.adjustRankContent
f3a7c77Evan Czaplicki
src/Type/Solve.hs+4−2
@@ -131,7 +131,8 @@ adjustRankContent youngMark visitedMark groupRank content =
131 return groupRank
131 return groupRank
132
132
133 Alias _ args realVar ->
133 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
135
136
136 Structure (App1 func arg) ->
137 Structure (App1 func arg) ->
137 max <$> go func <*> go arg
138 max <$> go func <*> go arg
@@ -143,7 +144,8 @@ adjustRankContent youngMark visitedMark groupRank content =
143 return outermostRank
144 return outermostRank
144
145
145 Structure (Record1 fields extension) ->
146 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
147
149
148
150
149
151