Mercurial > urweb
diff src/especialize.sml @ 1382:5cb95fb7d4d5
Broaden definition of valueish
author | Adam Chlipala <adam@chlipala.net> |
---|---|
date | Thu, 06 Jan 2011 09:25:15 -0500 |
parents | fd34210bc3e5 |
children | 0af6bd2dd149 |
line wrap: on
line diff
--- a/src/especialize.sml Thu Jan 06 09:14:06 2011 -0500 +++ b/src/especialize.sml Thu Jan 06 09:25:15 2011 -0500 @@ -324,7 +324,7 @@ val (fxs, xs, fvs, fin) = findSplit true (xs, typ, [], IS.empty, false) - fun valueish (e, _) = + fun valueish (all as (e, _)) = case e of EPrim _ => true | ERel _ => true @@ -337,15 +337,18 @@ | EKAbs _ => true | ECApp (e, _) => valueish e | EKApp (e, _) => valueish e - | EApp (e, (ERel _, _)) => + | EApp _ => let fun valueishf (e, _) = case e of ENamed _ => true + | EFfi _ => true + | ECApp (e, _) => valueishf e | EApp (e, (ERel _, _)) => valueishf e + | EApp (e, (ENamed _, _)) => valueishf e | _ => false in - valueishf e + valueishf all end | ERecord xes => List.all (valueish o #2) xes | _ => false @@ -371,8 +374,8 @@ ("b1", p_bool (not fin)), ("b2", p_bool (List.all (fn (ERel _, _) => true | _ => false) fxs')), - ("b2", p_bool (List.exists (not o valueish) fxs')), - ("b3", p_bool (IS.numItems fvs >= length fxs + ("b3", p_bool (List.exists (not o valueish) fxs')), + ("b4", p_bool (IS.numItems fvs >= length fxs andalso IS.exists (fn n => functionInside (#2 (List.nth (env, n)))) fvs))];*) default ()) else