diff options
author | 2012-03-03 16:20:54 -0500 | |
---|---|---|
committer | 2012-03-03 16:20:54 -0500 | |
commit | 53e8eba14aba951cef1e1a1428612a31d88ec0a7 (patch) | |
tree | 9b4dcc27bb6d0fa4d7c2deec53839f321c3f3fae | |
parent | 6bdf5f35f3e3efad57eb900cf9578900126c54dc (diff) |
Avoid 'not fully determined' errors for fancy tasks
-rw-r--r-- | src/monoize.sml | 14 |
1 files changed, 14 insertions, 0 deletions
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, |