From 5291d69e926a1967ab169482c60c09de696a8655 Mon Sep 17 00:00:00 2001 From: Adam Chlipala Date: Sun, 25 Oct 2009 12:08:21 -0400 Subject: Inlining threshold for Reduce --- src/unpoly.sml | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) (limited to 'src/unpoly.sml') diff --git a/src/unpoly.sml b/src/unpoly.sml index 6f838392..14ab4563 100644 --- a/src/unpoly.sml +++ b/src/unpoly.sml @@ -162,12 +162,19 @@ fun exp (e, st : state) = val vis' = map (fn (x, n, _, t, e, s) => (x, n, t, e, s)) vis - val funcs = IM.insert (#funcs st, n, - {kinds = ks, - defs = old_vis, - replacements = M.insert (replacements, - cargs, - thisName)}) + val funcs = foldl (fn ((_, n, n_old, _, _, _), funcs) => + let + val replacements = case IM.find (funcs, n_old) of + NONE => M.empty + | SOME {replacements = r, ...} => r + in + IM.insert (funcs, n_old, + {kinds = ks, + defs = old_vis, + replacements = M.insert (replacements, + cargs, + n)}) + end) (#funcs st) vis val ks' = List.drop (ks, length cargs) -- cgit v1.2.3