# HG changeset patch # User Adam Chlipala # Date 1294323915 18000 # Node ID 5cb95fb7d4d5da37c46b89ec1f808ae7ceddcd51 # Parent bf58ca871c0013fef1f66415d2ca0faacd2603fd Broaden definition of valueish diff -r bf58ca871c00 -r 5cb95fb7d4d5 src/especialize.sml --- 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