From 4092f090ff1584cd0a9a32c4c2f8943bf878ec8a Mon Sep 17 00:00:00 2001 From: Adam Chlipala Date: Sat, 3 Mar 2012 16:20:54 -0500 Subject: Avoid 'not fully determined' errors for fancy tasks --- src/monoize.sml | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'src') diff --git a/src/monoize.sml b/src/monoize.sml index 1331d065..d0be7449 100644 --- a/src/monoize.sml +++ b/src/monoize.sml @@ -4115,6 +4115,20 @@ fun monoDecl (env, fm) (all as (d, loc)) = let val (e1, fm) = monoExp (env, St.empty, fm) e1 val (e2, fm) = monoExp (env, St.empty, fm) e2 + + val un = (L'.TRecord [], loc) + val t = if MonoUtil.Exp.exists {typ = fn _ => false, + exp = fn L'.EFfiApp ("Basis", "periodic", _) => true + | _ => false} e1 then + (L'.TFfi ("Basis", "int"), loc) + else + un + + val e2 = (L'.EAbs ("$x", t, (L'.TFun (un, un), loc), + (L'.EAbs ("$y", un, un, + (L'.EApp ( + (L'.EApp (e2, (L'.ERel 1, loc)), loc), + (L'.ERel 0, loc)), loc)), loc)), loc) in SOME (env, fm, -- cgit v1.2.3