summaryrefslogtreecommitdiff
path: root/src/monoize.sml
diff options
context:
space:
mode:
authorGravatar Adam Chlipala <adam@chlipala.net>2012-03-03 16:20:54 -0500
committerGravatar Adam Chlipala <adam@chlipala.net>2012-03-03 16:20:54 -0500
commit53e8eba14aba951cef1e1a1428612a31d88ec0a7 (patch)
tree9b4dcc27bb6d0fa4d7c2deec53839f321c3f3fae /src/monoize.sml
parent6bdf5f35f3e3efad57eb900cf9578900126c54dc (diff)
Avoid 'not fully determined' errors for fancy tasks
Diffstat (limited to 'src/monoize.sml')
-rw-r--r--src/monoize.sml14
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,